Springboot 註解詳解

      springboot是spring公司開發一套快速搭建javaWeb項目的框架,其最大的特色就是簡便快捷,簡化了Spring項目大量的配置文件,其核心思想就是約定大於配置,而註解這種簡便快捷的方式天然成爲不二選擇,下面總結了springboot中一些經常使用的註解,之後也會持續更新加入新的註解,固然對於@Controller @RequestMapping 這種太過常見的就再也不舉例了。前端

     (一)參數類java

       1.@RequestParam    屬性  value = "name",required = true/false  defaultValue = xxx spring

public void say(@RequestParam("name") String name,@RequestParam("pwd") String password){ }

        2.@PathVariable   與@RequestParam 相似   基於restful風格 springboot

@RequestMapping("/demo/{id}/{name}") public void say(@PathVariable("id") String id,@PathVariable("name") String name1){ }

      3.@RequestBody   將前端表單中的name屬性綁定到實體類的屬性上,要求表單中的name名稱和實體類的屬性名稱一致。restful

public void say(@RequestBody User user){ }

     4.@RequstAttribute 從請求中獲取值、攔截器或@ModelAttribute中預存的屬性值  默認值true,沒有值時會拋異常ServletRequestBindingException,可將required屬性設置成false.app

     (二).掃描類的註解框架

      1.@Component   @Controller  @Service  @Repository這三個是@Component的子類,將掃描的包加入到IOC容器中,對於沒有掃描到的包可用@ComponentScan掃描指定的包,定義在類上工具

      2.@Bean  告訴Spring這個方法產生一個類對其管理,產生一個實例Bean,@Bean相對於@Component更加的靈活測試

      3.@Configuration   至關於spring的xml中的<beans>ui

                 +@Bean  則至關於xml中的<bean> 

package com.dxz.demo.configuration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; @Configuration public class TestConfiguration { public TestConfiguration() { System.out.println("TestConfiguration容器啓動初始化。。。"); } // @Bean註解註冊bean,同時能夠指定初始化和銷燬方法 // @Bean(name="testBean",initMethod="start",destroyMethod="cleanUp")
 @Bean @Scope("prototype") public TestBean testBean() { return new TestBean(); } }

TestBean

package com.dxz.demo.configuration; public class TestBean { private String username; private String url; private String password; public void sayHello() { System.out.println("TestBean sayHello..."); } public String toString() { return "username:" + this.username + ",url:" + this.url + ",password:" + this.password; } public void start() { System.out.println("TestBean 初始化。。。"); } public void cleanUp() { System.out.println("TestBean 銷燬。。。"); } }

測試類

複製代碼 package com.dxz.demo.configuration; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class TestMain { public static void main(String[] args) { // @Configuration註解的spring容器加載方式,用AnnotationConfigApplicationContext替換ClassPathXmlApplicationContext
        ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class); // 若是加載spring-context.xml文件: // ApplicationContext context = new // ClassPathXmlApplicationContext("spring-context.xml"); //獲取bean
        TestBean tb = (TestBean) context.getBean("testBean"); tb.sayHello(); } }

結果:

也能夠在TestBean類上加@Componet配合@Configration使用      

(三).資源引入類

    1.  @Value

     @Value("${book.name}")  獲取application.properties(也能夠是你的其餘配置文件中)的book.name=old man and sea

     @Value("#{name}")   獲取book實體類的name屬性

   2.@Resource 和@Autowired

      都是做爲Bean注入時使用,@Resource 是 java的註解,Spring也支持這一註解,有Name和Type屬性,當都不指定時用name屬性;@Autowired註解是Spring的註解默認是     ByType的

      當一個類有多個實現時,@Resource(name="xxx") 或@Qualifier("woman") 而 @Autowired須要和@Primary 在實現類上(man 和woman實現people,須要在man或woman上實現)

   3.@ImportResource("classpath:xxxxx.xml")加載xml的配置文件

   4.@ConfigurationProperties 

    有時須要將配置文件中的信息封裝成實體類,這樣調用起來就會很方便,

    配置文件:  

connection.username=admin connection.password=kyjufskifas2jsfs connection.remoteAddress=192.168.1.1

    實體類:

@Component @ConfigurationProperties(prefix = "connection") @Data //lombok的註解 須要引入lombok的依賴 IDEA工具安裝lombok 做用 自動生成get set 方法
public class ConnectionSettings { private String username; private String remoteAddress; private String password ; }

 使用時

@RestController @RequestMapping("/task") public class TaskController { @Autowired ConnectionSettings conn; @RequestMapping(value = {"/", ""}) public String hellTask(){ String userName = conn.getUsername(); return "hello task !!"; } }

固然你也能夠直接將@ConfigurationProperties 和@Bean  放一塊兒使用  這樣就不須要在ConnectionSettings類上加註解了 

@Bean @ConfigurationProperties(prefix = "connection") public ConnectionSettings connectionSettings(){ return new ConnectionSettings(); }

(四).事務類

   1.@Transactional  

相關文章
相關標籤/搜索