一、Spring Aware
Spring的依賴注入的最大亮點就是你所有的Bean對Spring容器的存在是沒有意識的,即你可以將你的容器替換成別的容器,這時的Bean之間的耦合度很低。
但是在實際項目中,你不可避免的要用到Spring容器本身的功能資源,這時你的Bean必須要意識到Spring容器的存在,才能調用Spring所提供的資源,這就是所謂的Spring Aware。
Spring Aware本來就是Spring設計用來框架內部使用的,若使用了Spring Aware,你的Bean將會和Spring框架耦合。
二、多線程
Spring通過任務執行器(TaskExecutor)來實現多線程和并發配置。
使用ThreadPoolTaskExecutor可實現一個基于線程池的TaskExecutor。
實際開發中任務一般是非阻礙的,即異步的,所以我們要在配置類中通過@EnableAsync開啟對異步任務的支持,并通過在實際執行的Bean的方法中使用@Async注解來聲明其是一個異步任務。
三、計劃任務
從Spring3.1開始,計劃任務在Spring中的實現變得異常的簡單。
通過在配置類注解@EnableScheduling來開啟對計劃任務的支持,然后在要執行計劃任務的方法上注解@Scheduled聲明這是一個計劃任務。
四、條件注解@Conditional
@Conditional根據滿足某一個特定條件創建一個特定的Bean。就是根據特定條件來控制Bean的創建行為,這樣我們可以利用這個特性進行一些自動的配置。在Spring Boot中將會大量應用到條件注解。
五、組合注解與元注解
元注解是可以注解到別的注解上的注解,被注解的注解稱之為組合注解,組合注解具備注解其上的元注解的功能。
六、@Enable*注解的工作原理
@EnableAspectJAutoProxy? ? ? ? ? ? 開啟對AspectJ自動代理的支持。
@EnableAsync? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?開啟異步方法的支持。
@EnableScheduling? ? ? ? ? ? ? ? ? ? ? ?開啟計劃任務的支持。
@EnableWebMvc? ? ? ? ? ? ? ? ? ? ? ? ? ?開啟Web MVC的配置支持。
@EnableConfigurationProperties? ?開啟對@ConfigurationProperties配置Bean的支持。
@EnableJpaRepositories? ? ? ? ? ? ? ?開啟對Spring Data JPA Repository的支持。
@EnableTransactionManagement 開啟注解式事務的支持。
@EnableCaching? ? ? ? ? ? ? ? ? ? ? ? ? ? 開啟注解式的緩存支持。
通過查看源碼,發現所有的@Enable*注解都有一個@Import注解,@Import是用來導入配置類的,這就說明這些自動開啟的實現其實是導入了一些自動配置的Bean,這些導入的配置方式主要分為一下三種類型:
1.直接導入配置類:
2.依據條件選擇配置類:
3.動態注冊Bean:
七、測試
1.測試結果正確:
2.測試結果錯誤: