我看到一些奇怪的行爲,我希望有人能在這個問題上發光。Spring的JavaConfig和CustomScopeConfigurer問題
讓我從描述我的設置開始。首先,一個簡單的數據對象
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 interface ConfigInterface {
public Apple getApple();
}
隨着實現類
@Configuration
@Import(AbstractTestConfig.class)
public class TestConfig implements ConfigInterface {
public Apple getApple() {
return new Apple().withName("Granny 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();
}
}
而且一下子@Autowired
對象conf
的當需要構建Apple
豆爲空。
更奇怪的是,如果我將CustomScopeConfigurer
bean移動到TestConfig
類,那麼它就起作用了。
有什麼我不知道的範圍或特別是CustomScopeConfigurer
對象?