繁体   English   中英

以编程方式将POJO转换为@Configuration Spring

[英]Turn POJO to @Configuration programmatically Spring

给定一个班级:

class MyConfiguration {
    @Bean
    String bean() {
        return new String();
    }
}

您可能会注意到它没有@Configuration批注。

如何使其具有@Configuration注解的行为,但添加它?

@Bean注释应该在工作的Lite Modehttps://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Bean.html

就像是:

@Configuration
class MainConfiguration {
    @Bean
    MyConfiguration myConfiguration() {
        MyConfiguration myConfiguration = do_some_spring_magic();
        // myConfiguration behaving like it's having @Configuration here
        return myConfiguration;
    }
}

我不明白您要在此处实现的用例是什么。.但是,如果您正在寻找以编程方式将bean注册到Spring Context中的方法,则可以按照以下步骤进行操作。

@Configuration
public class MyBeanRegisterFactory implements BeanDefinitionRegistryPostProcessor, PriorityOrdered {

    @Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanRegistry) throws BeansException {
        //depending on some condition you can do the below line
        beanRegistry.registerBeanDefinition("myBeanClass", new RootBeanDefinition("com.mybean.MyBeanClass"));
    }

    @Override
    public int getOrder() {
        return Ordered.HIGHEST_PRECEDENCE;
    }
}

在您的情况下,类MyConfiguration内的Bean定义可以如下编程地注册到spring上下文中。

http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/support/BeanDefinitionRegistryPostProcessor.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM