2017-11-08 1 views
0

次のSpring Beanをxmlからjavaconfigクラスに変換したいと考えています。xml to javaconfig:プロファイルとプロパティ

<bean name="recorder" class="Recorder" />  
<bean name="RecordFilter" class="RecordFilter"> 
    <property name="resourceLocation" value="classpath:ports.list" /> 
</bean> 

<bean name="iRecorder" class="iRecorder"> 
    <property name="auditRecorder" ref="auditRecorder" /> 
</bean> 

<beans profile="logging"> 
    <bean name="logger" class="Logger" /> 
</beans> 

しかし、私はJavaConfigにプロファイルとrefの書き方を知らない:

@Configuration 
public class AppConfig { 
    @Bean 
    public Recorder recorder() { 
     Recorder recorder = new Recorder(); 
     return recorder; 
    } 

    @Bean 
    public Filter filter(){ 
     Filter filter = new Filter(); 
     filter.setResourceLocation("classpath:audit/ignoredports.list"); 
     return filter; 
    } 

    @Bean 
    public Recorder recorder(){Recorder recorder = new Recorder(); 
     ??????? 
     return methodInvocationRecorder; 
    } 

    @Bean 
    ?????????????? 

} 

私は同じ要求を見ましたが、答えを見つけるdidn`tの。

答えて

0

私はあなたが達成しようとしていることを100%確信していませんが、これは正しい方向を指しているかもしれません。

<beans profile="logging"> 
    <bean name="logger" class="Logger" /> 
</beans> 

はJavaの設定で、それは次のように表すことができる:

@Configuration 
@Profile("logging") 
public class LoggingConfiguration { 

    @Bean 
    public Logger logger() { 
     Logger myLogger = new Logger(); 
     return myLogger; 
    } 

} 

したがってロガーBeanは意志

春のJavaの設定は@Profile

ので、あなたの例を取っ​​ても認めていません「ロギング」プロファイルがアクティブな場合にのみ使用可能/作成されます。

春のプロファイルを活性化する簡単な方法は、プロパティでそれらを設定することにより、次のとおりです。

spring.profiles.active=dev,logging 

これも環境変数を経由して上書きすることができます。

詳しくは、次のドキュメントを参照してください。 https://docs.spring.io/spring/docs/5.0.1.RELEASE/spring-framework-reference/core.html#beans-definition-profiles-java