Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在测试中禁用@Bean的initMethod_Java_Spring - Fatal编程技术网

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);
}