Java 在测试中禁用@Bean的initMethod
我正在为Java 在测试中禁用@Bean的initMethod,java,spring,Java,Spring,我正在为@配置类编写一个测试。它用initMethod声明一个@Bean: @Bean(initMethod = "doSomething") public MyBean myBean() { // instantiation and initialization } doSomething方法需要大量工作,需要复杂的测试设置才能成功。我想测试bean是否已正确初始化,但我不希望Spring在初始化完成后调用doSomething方法 我的第一个想法是使用BeanFactoryPos
@配置
类编写一个测试。它用initMethod
声明一个@Bean
:
@Bean(initMethod = "doSomething")
public MyBean myBean() {
// instantiation and initialization
}
doSomething
方法需要大量工作,需要复杂的测试设置才能成功。我想测试bean是否已正确初始化,但我不希望Spring在初始化完成后调用doSomething
方法
我的第一个想法是使用BeanFactoryPostProcessor
:
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
String[] beanNames = beanFactory.getBeanNamesForType(MyBean.class);
BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanNames[0]);
// TODO: disable initMethod
}
但是似乎没有办法使用BeanDefinition
来禁用initMethod
我是否遗漏了某些内容或是否有其他方法可以实现这一点?检查
BeanDefinition
是否是RootBeanDefinition
(或AbstractBeanDefinition
),然后使用its将init方法设置为null
设置初始值设定项方法的名称。默认值为null
,其中
如果没有初始值设定项方法
检查
BeanDefinition
是否为RootBeanDefinition
(或AbstractBeanDefinition
),然后使用its将init方法设置为null
设置初始值设定项方法的名称。默认值为null
,其中
如果没有初始值设定项方法
检查
BeanDefinition
是否为RootBeanDefinition
(或AbstractBeanDefinition
),然后使用its将init方法设置为null
设置初始值设定项方法的名称。默认值为null
,其中
如果没有初始值设定项方法
检查
BeanDefinition
是否为RootBeanDefinition
(或AbstractBeanDefinition
),然后使用its将init方法设置为null
设置初始值设定项方法的名称。默认值为null
,其中
如果没有初始值设定项方法
为什么不希望调用
doSomething
?该doSomething
方法需要大量工作,并且需要复杂的测试设置才能成功。我只想测试初始化,而不是实际完成了工作。为什么不希望调用doSomething
?该doSomething
方法需要大量工作,并且需要复杂的测试设置才能成功。我只想测试初始化,而不是实际完成了工作。为什么不希望调用doSomething
?该doSomething
方法需要大量工作,并且需要复杂的测试设置才能成功。我只想测试初始化,而不是实际完成了工作。为什么不希望调用doSomething
?该doSomething
方法需要大量工作,并且需要复杂的测试设置才能成功。我只想测试初始化,而不是实际完成的工作。
if (beanDefinition instanceof RootBeanDefinition) {
((RootBeanDefinition) beanDefinition).setInitMethodName(null);
}