該工程採用spring+mybatis的關聯映射,動態sql,sql片段實現 1、搭建項目結構如下 2、配置項目的pom.xml文件中的依賴 1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <project xmlns="http://maven.apach ...
雖然工作中交替會使用spring mvc 和spring boot 框架,但實際對spring中的很多註解並不是很瞭解,本篇將持續更新學習到的spring 註解。
Spring 主入口類上的註解
Spring boot項目中一般都會有這樣的啟動類:
@SpringBootApplication @ServletComponentScan(basePackages = { "com.xxx.web.controller" }) @ComponentScan(value = { "com.xxx" }) @EnableAutoConfiguration(exclude = { Xxx.class }) @EnableConfigurationProperties public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
那麼,你對啟動類中的諸多註解瞭解多少?
@ServletComponentScan
在 SpringBootApplication 上使用@ServletComponentScan 註解後,Servlet、Filter、Listener 可以直接通過 @WebServlet、@WebFilter、@WebListener 註解自動註冊,無需其他代碼。
@ComponentScan
@ComponentScan告訴Spring哪個packages下用註解標識的類會被spring自動掃描並裝入bean容器。通俗一點說,如果你某個類用@Controller註解標識了,如果入口啟動類中不加上@ComponentScan註解,那麼該Controller就不會被spring掃描到,更不會裝入Spring容易中,那麼你在代碼中就不能使用@Autowired註解使用,換句話說,你配置的這個Controller便沒有意義。
@EnableAutoConfiguration
參考文章 鏈接。
從classpath中搜索所有META-INF/spring.factories配置文件,然後將其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key對應的配置項載入到spring容器只有spring.boot.enableautoconfiguration為true(預設為true)的時候,才啟用自動配置
@EnableAutoConfiguration還可以進行排除,排除方式有2中,一是根據class來排除(exclude),二是根據class name(excludeName)來排除
其內部實現的關鍵點有
1)ImportSelector 該介面的方法的返回值都會被納入到spring容器管理中
2)SpringFactoriesLoader 該類可以從classpath中搜索所有META-INF/spring.factories配置文件,並讀取配置
@EnableConfigurationProperties
讀取配置文件的信息並自動封裝成實體類併在程式中直接使用。有一個實體類,實體類可以通過配置文件進行賦值。