Java 如何在Spring引导测试中直接自动连接父应用程序上下文?
我想在Spring引导测试中自动连接直接属于该父上下文的父应用程序上下文或Java 如何在Spring引导测试中直接自动连接父应用程序上下文?,java,spring,spring-boot,spring-cloud,spring-boot-test,Java,Spring,Spring Boot,Spring Cloud,Spring Boot Test,我想在Spring引导测试中自动连接直接属于该父上下文的父应用程序上下文或ConfigurableListableBeanFactory。就我而言 我使用的是Spring引导云,因此我的应用程序上下文的父应用程序上下文是bootstrapcontext。我想要它的原因是检查在自定义引导配置中定义的bean是否在bootstrap上下文中正确分配 渐变依赖性: implementation group: 'org.springframework.cloud', name: 'spring-clou
ConfigurableListableBeanFactory
。就我而言
我使用的是Spring引导云,因此我的应用程序上下文的父应用程序上下文是bootstrap
context。我想要它的原因是检查在自定义引导配置中定义的bean是否在bootstrap
上下文中正确分配
渐变依赖性:
implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter', version: '2.2.5.RELEASE'
我要检查的示例bean:
public class TestBean {
}
我的自定义引导配置:
@Configuration
public class MyBootstrapAutoconfiguration {
@Bean
public TestBean myBean() {
return new TestBean();
}
}
spring.factories
:
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
com.example.demo.MyBootstrapAutoconfiguration
样本测试:
@SpringBootTest(classes = MyBootstrapAutoconfigurationTest.TestConfiguration.class)
class MyBootstrapAutoconfigurationTest {
@Autowired
private ApplicationContext applicationContext;
@Autowired
private ConfigurableListableBeanFactory configurableListableBeanFactory;
@Test
void test() {
String[] beansFromAppContext = applicationContext.getBeanNamesForType(TestBean.class);
String[] beansFromBootstrapContext = applicationContext.getParent().getBeanNamesForType(TestBean.class);
String[] beansFromAppBeanFactory = configurableListableBeanFactory.getBeanNamesForType(TestBean.class);
System.out.println(beansFromAppContext.length);
System.out.println(beansFromBootstrapContext.length);
System.out.println(beansFromAppBeanFactory.length);
}
@Configuration
@EnableAutoConfiguration
static class TestConfiguration {
}
}
输出为:
0
1
0
问题是:
是否可以在Spring Boot Test中自动连接直接属于它的父级-bootstrap
应用程序上下文或ConfigurableListableBeanFactory
?我想避免调用getParent
同样奇怪的是,我无法通过子应用程序上下文在
bootstrap
应用程序上下文中找到定义的bean-这是所需的行为吗?不,您必须调用getParent()
。