当前位置: 首页 >服务端 > Spring @ContextConfiguration注解

Spring @ContextConfiguration注解

原文地址:https://www.cnblogs.com/bihanghang/p/10023759.html

@ContextConfiguration这个注解通常与@RunWith(SpringJUnit4ClassRunner.class)联合使用用来测试

当一个类添加了注解@Component,那么他就自动变成了一个bean,就不需要再Spring配置文件中显示的配置了。把这些bean收集起来通常有两种方式,Java的方式和XML的方式。当这些bean收集起来之后,当我们想要在某个测试类使用@Autowired注解来引入这些收集起来的bean时,只需要给这个测试类添加@ContextConfiguration注解来标注我们想要导入这个测试类的某些bean。

XML

我们先看看老年人使用的XML方式:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.1.xsd  ><!-- 自动扫描该包 --><context:component-scan base-package="com" /></beans>

这个XML文件通过<context:component-scan base-package="com" />标签将com包下的bean全都自动扫描进来。

下面我们就可以测试了。

一般这么写:

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath*:/*.xml"})public class CDPlayerTest {}

@ContextConfiguration括号里的locations = {"classpath*:/*.xml"}就表示将class路径里的所有.xml文件都包括进来,那么刚刚创建的那么XML文件就会包括进来,那么里面自动扫描的bean就都可以拿到了,此时就可以在测试类中使用@Autowired注解来获取之前自动扫描包下的所有bean

classpath和classpath*区别:

  • classpath:只会到你的class路径中查找找文件。

  • classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。

Java

如果使用Java的方式就会很简单了,我们就不用写XML那么繁琐的文件了,我们可以创建一个Java类来代替XML文件,只需要在这个类上面加上@Configuration注解,然后再加上@ComponentScan注解就开启了自动扫描,如果注解没有写括号里面的东西,@ComponentScan默认会扫描与配置类相同的包。

@Configuration@ComponentScanpublic class CDPlayConfig {}

此时如果想要测试的话,就可以这么写:

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes=CDPlayConfig.class)public class CDPlayerTest {}

相较于XML,是不是很酷炫,这也是官方提倡的方式。

在Spring Boot测试

@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTestpublic class Test {}

这个@SpringBootTest注解意思就是将SpringBoot主类中导入的bean全都包含进来。

此时SpringBoot主类也被当作了bean的收集器。类似上文的CDPlayConfig。

@SpringBootApplication@SpringBootConfiguration@ComponentScan(basePackages = {"com.bihang.*"})public class CarOrderWebApplication extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {retu builder.sources(CarOrderWebApplication.class);}public static void main(String[] args) {SpringApplication.run(CarOrderWebApplication.class, args);}}

 

作者:kszsa
来源链接:https://www.cnblogs.com/dyh004/p/11584129.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/112112.html

标签:Spring注解
分享给朋友:

“Spring @ContextConfiguration注解” 的相关文章

pycharm安装教程,超详细 2022年05月16日 21:28:02
软件工程复习要点 2022年05月17日 14:38:01
[C#]结构体和字节数组的相互转化 2022年05月17日 20:27:46
CentOS yum 源的配置与使用 2022年05月19日 19:54:27
Logback日志框架 2022年05月19日 20:04:05
学习go语言国内最全资料链接 2022年05月23日 21:27:32
Hugo LoveIt主题配置与使用 2022年05月23日 21:56:27
备战5月软考 2022年05月23日 22:39:11
信息系统项目干系人管理 2022年05月24日 20:43:17