有个需要引用bean的工具类
@Component
class FooUtils implements InitializingBean {
private static Foo foo;
private static Bar bar;
@Autowired
private void foo(Foo foo) {
MyFactory.foo = foo;
}
@Override
public void afterPropertiesSet() throws Exception {
bar = new Bar(foo, ...);
}
public static MyObj create(int param1, int param2, int param3) {
if (foo == null) { thrown new Exception(); }
return new MyObj(foo.baz(param1, param2), bar, param3);
}
}
想用上面那个工具类创建bean
@Configuration
@DependsOn('fooUtils') // <-- 然而不work, 开始new实例的时候都还没进行bean的init
class Config {
@Bean
public MyObj myObjBean() {
return FooUtils.create(1, 2, 3); // <-- 想不到怎么让这里在fooUtils完成autowired之后才执行
}
}
@Service
class MyService {
@Autowired
private MyObj myObj;
}
请看spring有关DependsOn注解的注释,我这里列出来。
注意到其中一句话了吗?
如果用在类上面,类上面需要加@ComponentScan("xxxxx")注解。