Spring @Configuration время выполнения впрыска

Вы не можете писать код в класс, только в методе, конструкторе или в блок инициализации {}. Вот почему вы получаете синтаксическую ошибку. Возможно, вы хотите использовать блок инициализатора следующим образом:

class my{
 int a;
 {
  a=1;
 }
}
4
задан gorodkovskaya 17 January 2019 в 07:07
поделиться

1 ответ

Решением было реализовать BeanDefinitionRegistryPostProcessor

public class MyMockBeanDefinitioRegistrynPostProcessor implements BeanDefinitionRegistryPostProcessor {

    @Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
        // registry.registerBeanDefinition(mockBeanClass, mockBeanDefinition);...

    }

    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        // nothing to do
    }

Затем объявить его как Bean:

@Configuration
public class MockBeanConfig {

    @Bean
    public MyMockBeanDefinitioRegistrynPostProcessor mockBeanDefinitionPp() {
        return new MyMockBeanDefinitioRegistrynPostProcessor();
    }

}

и добавить в контекст:

AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();

context.register(MockBeanConfig.class);
context.register(MyExtLibConfig.class);

context.refresh();
0
ответ дан gorodkovskaya 17 January 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: