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的区别。

 

 

 具体使用:

 

原文地址:https://www.cnblogs.com/dingjiaoyang/p/15513425.html