spring - Togglz 与 Spring @Configuration bean

标签 spring togglz

我正在尝试使用 @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/

相关文章:

java - 将电子邮件发件人 bean Autowiring 到另一个 bean 中?

java - 开启和关闭 togglz 功能的单元测试

java - Togglz 功能开关 - 如何为具有相同逻辑的多个 Id/parms 实现 ActivationStategy(组合策略中的逻辑相同)

java - 如何设置 Spring Retry 模板重试最大次数 : infinite

spring - 在 tomcat 上部署 Togglz Spring Boot 时出错

java - Togglz jetty9 嵌入

java - @Autowired 和@SpringBootTest 应该用于单元测试吗?

java - 为什么Spring Boot时找不到bean?

java - 如果邮件服务器不可用,如何防止应用程序启动失败