2017-06-23 10 views
1

を春に:あなたは気づくこととしてプログラムで@Configurationクラスを考える

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

それは@Configuration注釈を持っていません。

@Configuration注釈があるようにするにはどうすればよいですか?でない場合はを付け加えますか?

@Bean注釈べきLite Modeでない仕事、https://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; 
    } 
} 

答えて

2

あなたが探している場合、私はあなたがここで達成しようとしているユースケースが何であるかを理解しない..しかし、 SpringコンテキストにBeanをプログラム的に登録するには、以下のようにします。

@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定義は、以下のようにスプリングコンテキストに登録できます。

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

関連する問題