Java 通过编程方式将POJO转换为@Configuration

Java 通过编程方式将POJO转换为@Configuration,java,spring,spring-boot,Java,Spring,Spring Boot,给定一个类: class MyConfiguration { @Bean String bean() { return new String(); } } 正如您可能注意到的,它没有@配置注释 我如何使它表现得像有@Configuration注释,但不添加它 @Bean注释不应在精简模式下工作 比如: @Configuration class MainConfiguration { @Bean MyConfiguration myConf

给定一个类:

class MyConfiguration {
    @Bean
    String bean() {
        return new String();
    }
}
正如您可能注意到的,它没有
@配置
注释

我如何使它表现得像有
@Configuration
注释,但不添加它

@Bean
注释不应在
精简模式下工作

比如:

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

我不明白您在这里试图实现的用例是什么。。但是,如果您正在寻找通过编程将bean注册到Spring上下文中,那么您可以按照下面的方法进行

@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上下文中,如下所示