Sto osservando un comportamento strano, speravo che qualcuno qui potesse far luce sul problema.Spring JavaConfig e CustomScopeConfigurer issue
Vorrei iniziare descrivendo il mio setup. In primo luogo, un semplice oggetto di dati
public class Apple {
private String name;
public Apple withName(String name) {
this.name = name;
return this;
}
public String getName() {
return name;
}
}
E una classe di test ..
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={TestConfig.class})
public class AppleTest {
@Autowired private Apple apples;
@Test
public void simpleTest() {
System.out.println("OBJ: "+apples);
}
}
La configurazione è la seguente
@Configuration
public interface ConfigInterface {
public Apple getApple();
}
Con una classe che implementa
@Configuration
@Import(AbstractTestConfig.class)
public class TestConfig implements ConfigInterface {
public Apple getApple() {
return new Apple().withName("Granny apples");
}
}
Con la dipendenza di configurazione ...
@Configuration
public class AbstractTestConfig {
@Autowired ConfigInterface conf;
@Bean Apple myTestApple() {
return conf.getApple();
}
}
Tutto questo funziona alla grande. Corro il test, vedo l'output che mi aspetto. Ma poi lancio una chiave nel volante e modifico AbstractTestConfig in modo che appaia come segue.
@Configuration
public class AbstractTestConfig {
@Autowired ConfigInterface conf;
@Bean Apple myTestApple() {
return conf.getApple();
}
// NEW CODE
@Bean CustomScopeConfigurer scopeConfigurer() {
return new CustomScopeConfigurer();
}
}
E all'improvviso l'@Autowired
oggetto conf
è nullo quando è necessario costruire il fagiolo Apple
.
Ancora più strano, se sposto il bean CustomScopeConfigurer
nella classe TestConfig
, allora funziona.
C'è qualcosa che non so riguardo gli ambiti o l'oggetto CustomScopeConfigurer
in particolare?