@Configurattion注解的作用及一些列组合使用
從Spring3.0開始,@Configuration用于定義配置類,用戶替換xml配置文件,被注解的類內部包含有一個或多個被@Bean注解的方法,這些方法將會被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext類進行掃描,并用于構建bean定義,初始化Spring容器。
注意:@Configuration注解的配置類有如下要求:
一、用@Configuration加載spring
使用@Configuration標注的類相當于SSM中配置的xml核心配置文件。
1.1、@Configuration配置spring并啟動spring容器
1.2、@Configuration啟動容器+@Bean注冊Bean
1.3、@Configuration啟動容器+@Component注冊Bean
1.4、使用AnnotationConfigApplicationContext 注冊 AppContext 類的兩種方法
1.4.1配置類的注冊方式是將其傳遞給 AnnotationConfigApplicationContext 構造函數
1.4.2AnnotationConfigApplicationContext 的register 方法傳入配置類來注冊配置類
1.5、配置Web應用程序(web.xml中配置AnnotationConfigApplicationContext)
過去,通常要利用 XmlWebApplicationContext 上下文來配置 Spring Web 應用程序,即在 Web 部署描述符文件 web.xml 中指定外部 XML 上下文文件的路徑。XMLWebApplicationContext 是 Web 應用程序使用的默認上下文類。以下代碼描述了 web.xml 中指向將由 ContextLoaderListener 監聽器類載入的外部 XML 上下文文件的元素。
現在,您要將 web.xml 中的上述代碼更改為使用 AnnotationConfigApplicationContext 類。切記,XmlWebApplicationContext 是 Spring 為 Web 應用程序使用的默認上下文實現,因此您永遠不必在您的web.xml 文件中顯式指定這個上下文類。現在,您將使用基于 Java 的配置,因此在配置 Web 應用程序時,需要在web.xml 文件中指定 AnnotationConfigApplicationContext 類。上述代碼將修改如下:
以上修改后的 web.xml 現在定義了AnnotationConfigWebApplicationContext 上下文類,并將其作為上下文參數和 servlet 元素的一部分。上下文配置位置現在指向 AppContext 配置類。這非常簡單。下一節將演示 bean 的生命周期回調和范圍的實現。
1.6@Configuation總結
二、組合多個配置類(混合配置)
2.1、在@configuration中引入springml配置文件
使用@ImportResource加載xml文件到配置類中生效
2.2、在@configuration中引入其它注解配置
使用@Import注解將其他配置類引入到另一個配置類中生效
2.3、@configuration嵌套(嵌套的Configuration必須是靜態類)
三、@EnableXXX注解
例如:@EnanleWebmvc注解
SSM中原來SpringMVC核心配置信息MvcConfig.xml文件添加配置信息,作為Mvc框架環境,原來是通過xml來進行配置(視圖解析器,JSON轉換器,文件上傳解析器)但是這里是基于注解通過繼承WebMvcConfigurerAdapter類并重寫相關方法來進行配置(注意需要通過@EnableWebMvc注解來啟動MVC環境
要實現spring mvc自定義配置,需要開啟MVC配置:
總結:
當個遇到需要開啟注解驅動的配置,在配置配置類的時候就需要添加@EnanleXXX注解
例如:
在配置AOP編程的時候配置xml文件需要聲明自動代理生成器,創建代理 <aop:aspectj-autoproxy>,那么在使用配置類替代xml配置文件的時候,就需要在配置類上加上@EnableAspectJAutoProxy注解來聲明自動代理生成器,創建代理。
四、@Profile指定不同的環境
我們在開發時,難免碰到不同環境的配置不同,比如,生產環境,測試環境,開發環境的數據庫不一樣。這樣就需要我們指定不同環境中使用不同的URL。在Spring中,我們可以創建指定環境的Bean來解決這個問題。只有當規定的profile激活時,相應的bean才會被創建。另外沒有指定profile的bean之中都會被創建,與激活哪個profile沒有關系。
那么,如何激活一個Bean呢?我們可以指定spring.profile.active屬性來指定哪個環境的bean被激活。如果不指定這個屬性,它會去找spring.profiles.default的值。
如果均沒有指定的話,就沒有激活的profile,就不會創建指定profile的bean。
有多種方式設置這個屬性:
- 作為DispatcherServlet的初始化參數
- 作為Web應用的上下文參數
- 作為環境變量
- 使用@ActiveProfiles注解設置
例如在SpringBoot的application.properties文件中配置
五、使用外部變量
例如:在springboot項目中
通過在核心配置文件中自定義配置兩個屬性,然后通過@value注解注入到相應的屬性中。
在 SpringBootController 中定義屬性,并使用@Value 注解或者自定義配置值,并對 其方法進行測試;
總結
以上是生活随笔為你收集整理的@Configurattion注解的作用及一些列组合使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot--HelloWor
- 下一篇: SpringBoot开发最佳实践