我正在尝试使用 @Configuration beans 而不是 XML 来实现 Togglz 和 Spring。我不确定如何配置配置 bean 的返回类型。例如:
@Configuration
public class SystemClockConfig {
@Bean
public SystemClock plainSystemClock() {
return new PlainSystemClock();
}
@Bean
public SystemClock awesomeSystemClock() {
return new AwesomeSystemClock();
}
@Bean
public FeatureProxyFactoryBean systemClock() {
FeatureProxyFactoryBean proxyFactoryBean = new FeatureProxyFactoryBean();
proxyFactoryBean.setActive(awesomeSystemClock());
proxyFactoryBean.setInactive(plainSystemClock());
proxyFactoryBean.setFeature(Features.AWESOME_SYSTEM_CLOCK.name());
proxyFactoryBean.setProxyType(SystemClock.class);
return proxyFactoryBean;
}
}
systemClock
方法返回一个 FeatureProxyFactoryBean
,但该 Bean 的客户端需要一个 SystemClock
。当然,编译器对此感到抓狂。
我想它只有在使用 XML 配置时才有效。使用配置 bean 时应该如何处理它?</p>
最佳答案
我不是 Spring 的 Java Config 配置风格的专家,但我猜您的 systemClock()
方法应该返回使用 FeatureProxyFactoryBean 创建的代理。像这样的事情:
@Bean
public SystemClock systemClock() {
FeatureProxyFactoryBean proxyFactoryBean = new FeatureProxyFactoryBean();
proxyFactoryBean.setActive(awesomeSystemClock());
proxyFactoryBean.setInactive(plainSystemClock());
proxyFactoryBean.setFeature(Features.AWESOME_SYSTEM_CLOCK.name());
proxyFactoryBean.setProxyType(SystemClock.class);
return (SystemClock) proxyFactoryBean.getObject();
}
但我不确定这是否是使用 FactoryBeans 与 Spring Java Config 的常见方法。
关于spring - Togglz 与 Spring @Configuration bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15105964/