我想将以下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
??????????????
}
我看到了相同的请求,但没有找到答案。
答案 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