Am I missing something here? This occurs in 3.0.x and 3.1.x.
Base providing Config
Various cases paired with above base configCode:@Configuration class FooConfig { @Bean String foo() { return "foo"; } @Bean String baz() { return "baz"; } }
RunnerCode:@Configuration class Case0Config { @Autowired String foo2; @Bean String foobar() { return foo2 + "bar"; } } @Configuration class Case1Config { @Autowired String foo; @Bean String foobar() { return foo + "bar"; } } @Configuration class Case2Config { @Autowired @Qualifier("foo") String foo; @Bean String foobar() { return foo + "bar"; } } @Configuration class Case3Config { @Bean String foobar(String foo) { return foo + "bar"; } }
Code:public static void main(String[] args) { // new AnnotationConfigApplicationContext(FooConfig.class, Case0Config.class); // above will fail as expected since field name is different ApplicationContext c1 = new AnnotationConfigApplicationContext(FooConfig.class, Case1Config.class); System.out.println(c1.getBean("foobar")); // nullbar <- the inconsistency ApplicationContext c2 = new AnnotationConfigApplicationContext(FooConfig.class, Case2Config.class); System.out.println(c2.getBean("foobar")); // foobar ApplicationContext c3 = new AnnotationConfigApplicationContext(FooConfig.class, Case3Config.class); System.out.println(c3.getBean("foobar")); // foobar }


Reply With Quote