文章來源:http://www.tuicool.com/articles/bQnMra
在Spring Boot中幾乎可以完全棄用xml配置文件,本文的主題是分析常用的注解。
Spring最開始是為了解決EJB等大型企業框架對應用程序的侵入性,因此大量依靠配置文件來“非侵入式”得給POJO增加功能,然而,從Spring 3.x開始,Spring被外界最為詬病的一點就是配置繁多,號稱“配置地獄”,各種xml文件,出了問題非常難排查。從Spring 4.x開始,Spring.io提供了三種方式編織Bean:
- 利用注解:隱式配置,例如:@Autowired、@Bean、@Component等,通過注解來簡化xml文件。
- 利用Java文件:顯示配置,比xml配置的優勢是具備類型安全
- 利用傳統的xml配置文件
注解(annotations)列表
- @ResponseBody
用該注解修飾的函數,會將結果直接填充到HTTP的響應體中,一般用於構建RESTful的api; - @Controller
用於定義控制器類,在spring 項目中由控制器負責將用戶發來的URL請求轉發到對應的服務接口(service層)。 - @RestController
@ResponseBody和@Controller的合集 - @RequestMapping
提供路由信息,負責URL到Controller中的具體函數的映射。 - @EnableAutoConfiguration
Spring Boot自動配置(auto-configuration):嘗試根據你添加的jar依賴自動配置你的Spring應用。例如,如果你的classpath下存在HSQLDB,並且你沒有手動配置任何數據庫連接beans,那么我們將自動配置一個內存型(in-memory)數據庫”。你可以將@EnableAutoConfiguration或者@SpringBootApplication注解添加到一個@Configuration類上來選擇自動配置。如果發現應用了你不想要的特定自動配置類,你可以使用@EnableAutoConfiguration注解的排除屬性來禁用它們。例子代碼如下: - @ComponentScan
表示將該類自動發現(掃描)並注冊為Bean,可以自動收集所有的Spring組件,包括@Configuration類。我們經常使用@ComponentScan注解搜索beans,並結合@Autowired注解導入。 - @Configuration
相當於傳統的xml配置文件,如果有些第三方庫需要用到xml文件,建議仍然通過@Configuration類作為項目的配置主類——可以使用@ImportResource注解加載xml配置文件。 - @SpringBootApplication
相當於@EnableAutoConfiguration、@ComponentScan和@Configuration的合集。 - @Import
用來導入其他配置類。 - @ImportResource
用來加載xml配置文件。 - @Autowired
自動導入依賴的bean - @Service
一般用於修飾service層的組件 - @Repository
使用@Repository注解可以確保DAO或者repositories提供異常轉譯,這個注解修飾的DAO或者repositories類會被ComponetScan發現並配置,同時也不需要為它們提供XML配置項。