私はいくつかの奇妙な動作を見ている、私はここに誰かが問題を明るく照らすことを望んでいた。SpringのJavaConfigとCustomScopeConfigurerの問題
私のセットアップについて説明します。まず、簡単なデータがで
@Configuration
public interface ConfigInterface {
public Apple getApple();
}
実装するクラスでは
@Configuration
@Import(AbstractTestConfig.class)
public class TestConfig implements ConfigInterface {
public Apple getApple() {
return new Apple().withName("Granny apples");
}
}
を次のように設定がある
public class Apple {
private String name;
public Apple withName(String name) {
this.name = name;
return this;
}
public String getName() {
return name;
}
}
とテストクラス..
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={TestConfig.class})
public class AppleTest {
@Autowired private Apple apples;
@Test
public void simpleTest() {
System.out.println("OBJ: "+apples);
}
}
オブジェクト設定の依存関係...
@Configuration
public class AbstractTestConfig {
@Autowired ConfigInterface conf;
@Bean Apple myTestApple() {
return conf.getApple();
}
}
このすべては素晴らしいです。私はテストを実行する、私は期待した出力を参照してください。しかし、私はホイールにスパナを投げ、AbstractTestConfigを次のように変更します。
@Configuration
public class AbstractTestConfig {
@Autowired ConfigInterface conf;
@Bean Apple myTestApple() {
return conf.getApple();
}
// NEW CODE
@Bean CustomScopeConfigurer scopeConfigurer() {
return new CustomScopeConfigurer();
}
}
そしてApple
Beanを構築するために必要とされるとき、突然@Autowired
オブジェクトconf
のすべてがnullです。
CustomScopeConfigurer
beanをTestConfig
クラスに移動するとさらに奇妙なことになります。
スコープや特にCustomScopeConfigurer
オブジェクトについてわからないことはありますか?