SpringBoot工程IOC容器的获取
方式一:
SpringBoot项目启动时会创建一个ioc容器
可以通过依赖注入的方式获取ioc容器
方式二:
实现ApplicationContextAware接口,通过重写里面的setApplicationContext()方法获取容器和Bean
test测试包疑难问题
在test包下做测试时,
spring-boot-starter-parent可能会与其他依赖如spring-boot-starter-test、junit等出现版本不兼容的情况(引入了spring-boot-starter-test依赖就无需在引用junit依赖,否则出现冲突可能导致未知错误),导致一些未知错误,如无法注入ioc容器bean对象等。此时需要改变版本
在旧版本的JUnit,spring-boot-starter-test环境下做测试能需要在类上指定测试运行器以及
指定要加载的 Spring Boot 主应用程序类
@RunWith(SpringRunner.class) ---@Runwith注解在JUnit5被废弃
@SpringBootTest(classes = AppServerApplication.class)
注解说明:
-
@SpringBootTest(classes = AppServerApplication.class)
:@SpringBootTest
是 Spring Boot 提供的一个注解,用于在测试中加载 Spring 应用程序的上下文。它会自动搜索主配置类(通常是带有@SpringBootApplication
注解的类),并加载整个 Spring 应用程序上下文。classes = AppServerApplication.class
部分指定了要加载的 Spring Boot 主应用程序类。在这个例子中,AppServerApplication.class
是主配置类的类对象,用于告诉@SpringBootTest
注解加载该类所在的 Spring 应用程序上下文。
-
@RunWith(SpringRunner.class)
:@RunWith
是 JUnit 提供的一个注解,用于指定测试运行器。SpringRunner.class
是 Spring 提供的测试运行器,它会在测试执行之前初始化 Spring 应用程序上下文,并提供一些额外的功能,如自动注入@Autowired
注解的依赖项等。