5

XML ではなく @Configuration Bean を使用して 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 を使用する場合、どのようにアプローチすればよいですか?

4

1 に答える 1

5

私は 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 で使用する一般的な方法であるかどうかはわかりません。

于 2013-02-27T07:40:17.207 に答える