Spring Boot 之@Component、@configuration

Spring 2.5 中除了提供 @Component 註釋外,還定義了幾個擁有特殊語義的註釋,它們分別是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,這 3 個註釋和 @Component 是等效的,但是從註釋類的命名上,很容易看出這 3 個註釋分別和持久層、業務層和控制層(Web 層)相對應。雖然目前這 3 個註釋和 @Component 相比沒有什麼新意,但 Spring 將在以後的版本中爲它們添加特殊的功能。所以,如果 Web 應用程序採用了經典的三層分層結構的話,最好在持久層、業務層和控制層分別採用 @Repository、@Service 和 @Controller 對分層中的類進行註釋,而用 @Component 對那些比較中立的類進行註釋。
 

@configuration、@Bean

@Bean是一個方法級別上的註解,主要用在@Configuration註解的類裏,也可以用在@Component註解的類裏。添加的bean的id爲方法名。作用類似於xml配置文件中的bean。

@configuration和@component之間的區別

@configuration和@component之間的區別是:@Component註解的範圍最廣,所有類都可以註解,但是@Configuration註解一般註解在這樣的類上:這個類裏面有@Value註解的成員變量和@Bean註解的方法,就是一個配置類。

Component註解也會當做配置類,但是並不會爲其生成CGLIB代理Class,所以在生成Driver對象時和生成Car對象時調用car()方法執行了兩次new操作,所以是不同的對象。當時Configuration註解時,生成當前對象的子類Class,並對方法攔截,第二次調用car()方法時直接從BeanFactory之中獲取對象,所以得到的是同一個對象。

@Configuration 中所有帶 @Bean 註解的方法都會被動態代理,因此調用該方法返回的都是同一個實例。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章