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

esolve
  • 947

譬如

 @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,如何注入?

回复
阅读 3.9k
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);
     }
 }
你知道吗?

宣传栏