1、基於Java的容器配置html
@Configuration & @Bean 註解:java
在Spring的新的Java-Configuration的中間產物是基於類的@Configuration的註解和基於方法的@Bean註解。
@Bean註解是用來指明方法的實例化,配置和初始化一個對象是經過Spring的IoC容器來管理的。對於那些熟悉使用以XML配置Spring的<beans /> 標籤,@Bean註解和<bean />標籤是起相同做用的。你能和Spring的@Component註解的組件一塊兒使用@Bean註解方法, 然而,這些@Bean註解的方法一般是和@Configuration的Bean。
@Configuration註解的類指明該類主要是做爲一個bean的來源定義。此外,@Configurationd定義的classes容許在同一個類中使用@Bean定義的方法來定義依賴的bean
註釋類與@Configuration表示這個類可使用Spring IoC容器爲bean定義的來源。在@Bean 註解告訴Spring的註解爲@Bean的一個方法將返回應註冊爲在Spring應用程序上下文中的bean對象。最簡單可行的@Configuration類將以下所示: web

上面的AppConfig
類等效於如下Spring <beans/>
XML:spring
JavaConfig是Spring的一個子項目, 它皆在經過Java類的方式提供 Bean的定義信息. 普通的POJO只要標註了 @Configuration註解, 就能夠爲 Spring 容器提供Bean定義的信息了. 每一個標註了 @Bean註解的方法都至關於提供了 Bean的定義信息.
使用 @Configuration 註解標註配置類:安全
一、(Manager實體這裏就不截圖了)xss
上面的代碼將等同於下面的XML配置:函數
<bean id="mgr" class="org.sl.netmarket.entities.Manager"/>spa
註解爲@Bean的方法名稱做爲工做bean的id,它建立並返回實際的bean。配置類能夠有聲明多個@Bean。一旦配置類定義,能夠加載和提供他們使用AnnotationConfigApplicationContext .net
Spring 提供了一個 AnnotationConfigApplicationContext 類. 它可以直接經過標註 @Configuration 的Java類啓動容器. 以下,以Spring容器:code
2.
AnnotationConfigApplicationContext 支持加載多個 @Configuration 的Java類. 而後經過刷新容器應用配置這些類.
也能夠經過 @Import 註解, 將多個配置類組裝到一個配置類中, 只須要加載一個配置類就能夠.
結果:
這麼作有什麼好處呢?
1.使用純java代碼,不在須要xml
2.在配置中也可享受OO帶來的好處
3.類型安全對重構也能提供良好的支持
4.依舊能享受到全部springIoC容器提供的功能
ApplicationContext 接口的最經常使用的實現類是 ClassPathXmlApplicationContext 和 FileSystemXmlApplicationContext,以及面向 Portlet 的 XmlPortletApplicationContext 和麪向 web 的 XmlWebApplicationContext,它們都是面向 XML 的。Spring 3.0 新增了另外兩個實現類:AnnotationConfigApplicationContext 和 AnnotationConfigWebApplicationContext。從名字即可以看出,它們是爲註解而生,直接依賴於註解做爲容器配置信息來 源的 IoC 容器初始化類。因爲 AnnotationConfigWebApplicationContext 是 AnnotationConfigApplicationContext 的 web 版本,其用法與後者相比幾乎沒有什麼差異,所以本文將以 AnnotationConfigApplicationContext 爲例進行講解。
AnnotationConfigApplicationContext 搭配上 @Configuration 和 @Bean 註解,自此,XML 配置方式再也不是 Spring IoC 容器的惟一配置方式。二者在必定範圍內存在着競爭的關係,可是它們在大多數狀況下仍是相互協做的關係,二者的結合使得 Spring IoC 容器的配置更簡單,更強大。以前,咱們將配置信息集中寫在 XML 中,現在使用註解,配置信息的載體由 XML 文件轉移到了 Java 類中。咱們一般將用於存放配置信息的類的類名以 「Config」 結尾,好比 AppDaoConfig.java、AppServiceConfig.java 等等。咱們須要在用於指定配置信息的類上加上 @Configuration 註解,以明確指出該類是 Bean 配置的信息源。
注意:Spring 對標註 Configuration 的類有以下要求
配置類不能是 final 的;配置類不能是本地化的,亦即不能將配置類定義在其餘類的方法內部;配置類必須有一個無參構造函數。AnnotationConfigApplicationContext 將配置類中標註了 @Bean 的方法的返回值識別爲 Spring Bean,並註冊到容器中,受 IoC 容器管理。@Bean 的做用等價於 XML 配置中的 標籤。
@Bean 具備如下四個屬性:
name -- 指定一個或者多個 Bean 的名字。這等價於 XML 配置中 的 name 屬性。
initMethod -- 容器在初始化完 Bean 以後,會調用該屬性指定的方法。這等價於 XML 配置中 的 init-method 屬性。
destroyMethod -- 該屬性與 initMethod 功能類似,在容器銷燬 Bean 以前,會調用該屬性指定的方法。這等價於 XML 配置中 的 destroy-method 屬性。
autowire -- 指定 Bean 屬性的自動裝配策略,取值是 Autowire 類型的三個靜態屬性。Autowire.BY_NAME,Autowire.BY_TYPE,Autowire.NO。與 XML 配置中的 autowire 屬性的取值相比,這裏少了 constructor,這是由於 constructor 在這裏已經沒有意義了。@Bean 沒有直接提供指定做用域的屬性,能夠經過 @Scope 來實現該功能。
因爲@configureation註解類自己已經標註了@component註解,因此任何標註了@configuration的類,自己也至關於標註了@component,即它們能夠像普通的bean同樣被注入到其它bean中去。
2、基於配置文件及Java類
一、先建立一個實體類
@component (把普通pojo實例化到spring容器中,至關於配置文件中的
<bean id="" class=""/>)
泛指各類組件,就是說當咱們的類不屬於各類歸類的時候(不屬於@Controller、@Services等的時候),咱們就可使用@Component來標註這個類。
https://www.cnblogs.com/xss512/p/10905006.html
二、配置xml文件
掃描須要的包,是掃描註解了@Component的實體類
三、
結果:
這就得到了manager的實例了