Spring基於註解的容器配置
首先用spring框架開發的程式設計師會有兩種用spring開發的風格
第一種就是我們spring配置的ApplicationContext.xml配置檔案
另一種就是我們spring的註解
這時候疑問來了,註解是否比配置Spring的XML更好?
答案當然不是絕對的!
基於註解的配置的引入引發了這種方法是否比XML“更好”的問題。簡短的回答是“它取決於誰。”
長期的答案是每種方法都有其優點和缺點,通常,由開發人員決定哪種策略更適合他們。由於它們的定義方式。
《註解在其宣告中提供了大量上下文,從而導致更短更簡潔的配置。但是,XML擅長在不觸及原始碼或重新編譯它們的情況下連線元件。一些開發人員更喜歡將佈線靠近源,而另一些開發人員則認為註解類不再是POJO,而且配置變得分散且難以控制。》
綜上所述,無論選擇如何,Spring都可以兼顧兩種風格,甚至可以將它們混合在一起。
好,接下來我們就開始講解我們平時會用的註解
自我理解使用註解定義bean兩種方式{
1)@Configuration
@Bean
2)@CompentScan (bean的掃描){
@Compoment
@Repository:用於標註Dao類
@Service:用來表明業務邏輯一般建議在專案中寫在實現類上
@Controller:用於標註控制器的類
@Configuration 定義取代xml的java配置類
@Autowired:用來表示根據型別注入
@Resource:用來表示根據名稱注入
@Scope:等同於配置檔案scope屬性
@Import 匯入其他的java配置類
@Description:用來描述我們的程式碼(也就是我們的開發人員做專案期間為了更方便的讀程式碼)
}
bean的掃描也就是@ComponentScan的作用是:
掃描指定包下的標記性註解
如果不指定包名,預設與類同級的包及子包
當然我們的註解上也可以實現bean屬相的生命週期:
@PostConstruct:相當於我們spring配置檔案中的bean屬性的init-method方法
@PreDestory:相當於我們spring配置檔案中的bean屬性的destroy-method方法
範圍
@Scope
匯入
@Import 匯入其他的java配置類
@ImportResource 匯入其他spring的xml配置檔案
屬性檔案
@PropertySource 匯入屬性檔案
@Value("${屬性檔案的key}")
配置PropertySourcesPlaceholderConfigurer類
利用BeanFactoryPostProcessor解決站位符問題
參考如下: 也就是我獲取的是jdbc的配置檔案的URL路徑
簡單的main方法實現
實現的時候的注意區分:
以上註解的實現用來開啟spring容器建立例項化物件的是
AnnotationConfigApplicationContext ann= new AnnotationConfigApplicationContext();
而我們spring配置檔案中的是
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(“獲取配置檔案的路徑”);
容器擴充套件
1. Bean元資料前後置處理
BeanFactoryPostProcessor
更改Bean的定義 :BeanDefinition <bean abastract lazy-init
- Bean前後置處理
BeanPostProccessor(postProcessBeforeInitialization,postProcessAfterInitialization)
在Bean被初始化後,給與修改其屬性及特徵的機會
當然你用延遲載入這個方法試不出來效果的時候 我建議你使用上圖那個方法 並且在實體類裡建立一個方法輸出一句話來演示 參考:
那麼我們main方法的簡單實現如下:
那麼Bean前後置處理的這個介面BeanPostProccessor注意跟上面的加Factory的區分
簡單參考如下:
具體實現:
環境Environment
記得在這個類上面加上我們的@Configuration
main的簡單實現參考如下:
幫助我們理解spring容器的圖示
ok我們先寫到這裡. 未完待續…