@Configurattion注解的作用及一些列组合使用
从Spring3.0开始,@Configuration用于定义配置类,用户替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
注意:@Configuration注解的配置类有如下要求:
- @Configuration不可以是final类型;
- @Configuration不可以是匿名类;
- 嵌套的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注解的作用及一些列组合使用相关推荐
- Spring常用注解,以及注解的作用和简单用法
这篇文章主要介绍了Spring当中的常见的一些注解,以及注解的简单用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 @Configuration 作用:指定当 ...
- 一文总结Spring 注解及作用详解
文章目录 开启注解扫描配置 @RequestMapping 声明bean的注解 注入bean的注解 spring配置文件中读取properties配置文件 j配置类相关注解 切面(AOP)相关注解 @ ...
- Numpy 数组复合排序——mX4列,根据多列组合排序
Numpy 数组复合排序--mX4列,根据多列组合排序 一. Numpy 仅根据某列对 array(mX4)整体排序用argsort import numpy as npdata = np.array ...
- pandas将dataframe数据列中的年、月、日列组合成单一的日期数据列实战
pandas将dataframe数据列中的年.月.日列组合成单一的日期数据列实战 目录 pandas将dataframe数据列中的年.月.日列组合成单一的日期数据列实战
- Spring Ioc注解式开发中注解的作用
Spring Ioc注解式开发中注解的作用 目标:本章节注重于Spring Ioc的注解式开发之中注解的作用. 基于注解的DI实现IOC 1.定义bean而注解 a.@Component @Repos ...
- @getmapping注解的作用_一口气说出6种,@Transactional注解的失效场景
作者:程序员内点事 引言 昨天公众号粉丝咨询了一个问题,说自己之前面试被问@Transactional注解哪些场景下会失效,一时语塞致使面试失败.所以今天简单的和大家分享一下@Transactiona ...
- android注解的作用,Android 用注解来提升代码质量
Android 用注解来提升代码质量 Android,注解,annotation 2018.07.13 Android 提供了一个注解的 support 包,这个注解包配合 IDE 可以用来提升我的代 ...
- @data注解的作用_Java中注解学习系列教程-2
在上一篇文章中,我们讲解了:Java中注解的定义.JDK中内置注解.第三方注解. 本文是注解系列教程中的第二篇.来看看今天主要内容: 1:注解的分类 2:元注解说明 3:自定义注解声明 一:注解的 ...
- spring boot常用注解的作用
Controller层注解 @Controller和@RestController的区别 @RestController注解相当于@ResponseBody + @Controller合在一起的作用 ...
最新文章
- openFileDialog 打开TXT记事本文件写入数据库
- 1.2.3 TCP/IP参考模型和五层参考模型
- anki 新的卡片类型_梁宝川:这一类型Anki卡片,你做了吗?
- 阿里nacos安装及使用指南
- java科学计数字符串显示
- java,将Image变量保存成图片
- 全屏背景:15个jQuery插件实现全屏背景图像或媒体
- oracle创建数据库用户并授权,oracle创建数据库、表空间、用户并授权
- python通讯录综合_Python通讯录作业
- 【Kattis - triangle 】Sierpiński Circumference(数学,求位数,取对数或Java)
- window 下注册 redis服务
- 漏洞C:/Windows/Fonts/csrss.exe文件找不到简单查找方法
- php goeasy,如何使用GoEasy实现PHP与Websocket实时通信
- QtreeView 树形结构
- HTML的表格边框的合并
- java地铁售票机系统_Java_地铁购票系统
- 电路原理图(SCH)相关知识详解
- 专科计算机网络技术综述,高职高专计算机系列教材:计算机网络技术
- ubuntu下的3D桌面.compiz
- 个推里群推php教程,GitHub - lyx2297999137/yii2-igetui: yii2个推