@Bean的方法中如何注入同一个@Configuration注解的类里的其他@Bean注解的bean?

譬如

 @Configuration
 public class MyConfig{
  
     @Resource(name = "ds1")
     DataSource ds1;   
 
     @Bean(name="ds2")
     DataSource getDataSource(){
        ...
     }
     
     @bean(name= "session')
     Session getSession(){
        DataSource ds;
        if(..){
            ds = ds1;
        }else{
            ds = ds2;
        }
        return new Session(ds);
     }
     
     @bean("mananger")
     Manager getManager(){
         return new Manager(ds2);
     }
 }

我现在想在“session” 和 "mananger"这两个bean中用到ds2这个bean,如何注入?

阅读 6.4k
2 个回答

直接调用方法就好了,被@Bean注解的方法会被Spring重写,多次调用会返回同一个Bean对象

这样子

 @Configuration
 public class MyConfig{
  
     @Resource(name = "ds1")
     DataSource ds1;   
 
     @Bean(name="ds2")
     DataSource getDataSource(){
        ...
     }
     
     @bean(name= "session')
     Session getSession(DataSource ds2){
        DataSource ds;
        if(..){
            ds = ds1;
        }else{
            ds = ds2;
        }
        return new Session(ds);
     }
     
     @bean("mananger")
     Manager getManager(DataSource ds2){
         return new Manager(ds2);
     }
 }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题