我想知道这是否会给我带来麻烦,或者这是一个坏主意:
@Configuration
public class MyConfig {
@Bean
public SomeBean1 someBean1() {
return ...
}
@Bean
public SomeBean2 someBean2() {
return ...
}
}
public class Main {
public static void main(String[] args) throws Throwable {
ApplicationContext ctx = new AnnotationConfigApplicationContext(HubBrokerConfig.class);
MyConfig conf = ctx.getBean(MyConfig.class);
conf.someBean1().doSomething();
conf.someBean2().doSomething();
}
}
你可能想知道为什么我会像上面那样做而不是:
public class Main {
public static void main(String[] args) throws Throwable {
ApplicationContext ctx = new AnnotationConfigApplicationContext(HubBrokerConfig.class);
ctx.getBean(SomeBean1.class)).doSomething();
ctx.getBean(SomeBean2.class)).doSomething();
}
}
我不太喜欢第二种方法,因为它不会在编译时捕获那么多错误。例如,如果我执行 ctx.getBean(SomeNonBean.class) 我不会得到编译时错误。此外,如果 someBean1() 是私有的,编译器会捕获错误。