springboot中@Configuration的用法


一、背景
在spring框架中,會有大量 的xml配置文件,或者需要做很多繁瑣的配置。

從spring3開始,spring就支持了兩種bean的配置方式, 一種是基於xml文件方式、另一種就是JavaConfig 。

springboot 框架是為了能夠幫助使用 spring 框架的開發者快速高效的構建一個基於 spirng 框架以及 spring 生態 體系的應用解決方案。它是對約定優於配置這個理念下 的一個最佳實踐。因此它是一個服務於框架的框架,服務的范圍是簡化配置文件。

約定優於配置的體現

maven的目錄結構

默認有resources文件夾存放配置文件
默認打包方式為jar
spring-boot-starter-web 中默認包含 spring mvc 相關依賴以及內置的tomcat容器,使得構建一個web應用 更加簡單

默認提供application.properties/yml文件

默認通過 spring.profiles.active 屬性來決定運行環境時讀取的配置文件

EnableAutoConfiguration 默認對於依賴的starter進行自動裝載

Spring4 以后,官方推薦我們使用Java Config來代替applicationContext.xml,聲明將Bean交給容器管理。

在Spring Boot中,Java Config的使用也已完全替代了applicationContext.xml。實現了xml的零配置。在實現JavaConfig配置的時候就需要使用@Configuration和@Bean注解。

二、注解@Configure的作用
@Configuration的作用:標注在類上,配置spring容器(應用上下文)。相當於把該類作為spring的xml配置文件中的<beans>。@Configuration注解的類中,使用@Bean注解標注的方法,返回的類型都會直接注冊為bean。

@Configure注解的定義如下:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
String value() default "";
}

從定義來看,底層是含有@Component ,所以@Configuration 具有和 @Component 的作用。因此context:component-scan/或者@ComponentScan都能處理@Configuration注解的類。

 

從Spring3.0,@Configuration用於定義配置類,可替換xml配置文件,被注解的類內部包含有一個或多個被@Bean注解的方法,這些方法將會被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext類進行掃描,並用於構建bean定義,初始化Spring容器。

注意:@Configuration注解的配置類有如下要求:

三、JavaConfig和xml的異同
傳統意義上的 spring 應用都是基於 xml 形式來配置 bean 的依賴關系。然后通過spring容器在啟動的時候,把bean進行初始化並且,如果bean之間存在依賴關系,則分析這些已經在IoC容器中的bean根據依賴關系進行組裝。 Java5 引入了 Annotations 這個特性,Spring 框架也緊隨大流並且推出了基於 Java 代碼和Annotation元信息的依賴關系綁定描述的方式,也就是JavaConfig。

任何一個標注了@Configuration 的 Java 類定義都是一個 JavaConfig 配置類。而在這個配置類中,任何標注了 @Bean 的方法,它的返回值都會作為 Bean 定義注冊到 Spring的IOC容器,方法名默認成為這個bean的id。和之前XML配置的作用是一樣的。

具體的相同之處:
1、@Configuration標注在類上,相當於把該類作為spring的xml配置文件中的,作用為:配置spring容器(應用上下文)
2、@Bean標注在方法上(返回某個實例的方法),等價於spring的xml配置文件中的,作用為:注冊bean對象

1、表達形式層面
@Configuration標注在類上,相當於把該類作為spring的xml配置文件中的,作用為:配置spring容器(應用上下文)

基於XML配置的方式是這樣:

 

 

 

 

 

 

 

 

 

如果一個bean的定義依賴其他bean,則直接調用對應的JavaConfig類中依賴bean的創建方法就可以了。

四、兩種方法配置Mybatis

博文中,展示了分別用JavaConfig和xml配置mybatis的代碼。可以很容易看出JavaConfig和xml的區別。

 

 

 

 

 具體使用:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM