1. 程式人生 > >Spring基於註解的容器配置

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   
  1. Bean前後置處理
    BeanPostProccessor(postProcessBeforeInitialization,postProcessAfterInitialization)
    在Bean被初始化後,給與修改其屬性及特徵的機會

在這裡插入圖片描述
當然你用延遲載入這個方法試不出來效果的時候 我建議你使用上圖那個方法 並且在實體類裡建立一個方法輸出一句話來演示 參考:
在這裡插入圖片描述
那麼我們main方法的簡單實現如下:
在這裡插入圖片描述
那麼Bean前後置處理的這個介面BeanPostProccessor注意跟上面的加Factory的區分
簡單參考如下:
在這裡插入圖片描述
具體實現:
在這裡插入圖片描述
環境Environment
記得在這個類上面加上我們的@Configuration
在這裡插入圖片描述
main的簡單實現參考如下:
在這裡插入圖片描述
幫助我們理解spring容器的圖示

在這裡插入圖片描述
ok我們先寫到這裡. 未完待續…