一部の構成をXMLを介してシステムデプロイヤーに公開し、残りを構成Beanに保持しています。
一部のBeanは、XMLファイルのBeanに依存しています。しかし、Springはこの依存関係を解決できないようです。
メインの構成クラス:
@Configuration
@Import({FeatureTogglesConfig.class, LanguagesConfig.class ... }
FeatureTogglesConfigクラス:
@Configuration
@ImportResource(value = "classpath*:**/features-config.xml")
public class FeatureTogglesConfig {
}
これにより、XMLファイルが読み取られて作成されます...:
<bean id="featureManager" class="toggles.FeatureManager">
<constructor-arg>
<set value-type="toggles.Feature">
<value>FAKE_LANGUAGES</value>
</set>
</constructor-arg>
</bean>
FAKE_LANGUAGESは列挙値です。FeatureManagerを自動配線する必要があります。
public enum Feature {
FAKE_LANGUAGES;
@Autowired
private FeatureManager manager;
public boolean isActive() {
return manager.isActive(this);
}
LanguagesConfigは、機能マネージャーが設定されている必要がある方法で列挙型を使用します。
@Bean(name = "fake-latin-language-group")
public FakeLatinLanguageGroup fakeLatinLanguageGroup() {
return if FAKE_LANGUAGES.isActive() ? new FakeLatinLanguageGroup() : ... ;
}
ただし、LanguagesConfigをロードすると、がnullであるNullPointerException
ためにがスローされます。manager
Springは依存関係を識別して、マネージャーを接続することができませんでした。
アノテーションでこれを修正しようとしました@DependsOn("featureManager")
が、そのようなBeanがないと文句を言います。
したがって、@ Configuration Beanは@ImportResourceディレクティブよりも優先されるようで、2つの間に依存関係を持つことはできません。そうですか?