xml到javaconfig:个人资料和属性

时间:2017-11-08 13:12:38

标签: xml spring spring-java-config

我想将以下spring bean从xml转换为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中编写profile和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
    ??????????????

}

我看到了相同的请求,但没有找到答案。

1 个答案:

答案 0 :(得分:0)

我并非100%确定你想要实现的目标,但这可能会指向正确的方向。

Spring java config允许@Profile

以你的榜样为例:

<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;
    }

}

因此只有在“logging”配置文件处于活动状态时才能使用/创建记录器bean。

激活弹簧轮廓的一种简单方法是在属性中设置它们:

spring.profiles.active=dev,logging

这也可以通过环境变量覆盖。

如需进一步阅读,您可以参考以下文档: https://docs.spring.io/spring/docs/5.0.1.RELEASE/spring-framework-reference/core.html#beans-definition-profiles-java