@Configurattion注解的作用及一些列组合使用

本文详细介绍了@Configuration注解在Spring中的作用,包括如何启动和注册Spring容器、配置类的使用方式,以及与@Component、@Bean、@ImportResource、@Import和@Profile的结合使用。此外,还讨论了如何在不同环境和外部变量中使用@Configuration。

从Spring3.0开始,@Configuration用于定义配置类,用户替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

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

  1. @Configuration不可以是final类型;
  2. @Configuration不可以是匿名类;
  3. 嵌套的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 注解或者自定义配置值,并对 其方法进行测试;

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值