簡體   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