猿问

spring是否能在其它bean完成init之后才创建另外一个bean的实例?

有个需要引用bean的工具类

@Componentclass 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的initclass Config {    @Bean
    public MyObj myObjBean() {        return FooUtils.create(1, 2, 3); // <-- 想不到怎么让这里在fooUtils完成autowired之后才执行
    }
}
@Serviceclass MyService {
    @Autowired
    private MyObj myObj;
}


摇曳的蔷薇
浏览 762回答 1
1回答

一只斗牛犬

改成,还不行就把create改成实例方法&nbsp;&nbsp;&nbsp;&nbsp;@Bean &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;MyObj&nbsp;myObjBean(FooUtils&nbsp;utils)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;FooUtils.create(1,&nbsp;2,&nbsp;3); &nbsp;&nbsp;&nbsp;&nbsp;}
随时随地看视频慕课网APP

相关分类

Java
我要回答