如何使用bean方法名称注入依赖项?

时间:2018-10-18 23:48:11

标签: spring dependency-injection javabeans

例如,现在我有一个依赖类:

public classA {
  @Bean(name = "s1")
  public Class1 s1 {}

  @Bean(name = "s2")
  public Class2 s2 (@Name("s1")) {}
}

所以在classA中,有两个方法s1和s2,并且bean方法的名称分别为s1和s2。

现在我可以使用bean方法名称s2注入Class2吗? 做某事:

@Inject @Name private Class2 obj;

2 个答案:

答案 0 :(得分:1)

您可以使用@Qualifier

@Configuration
public class Config {

   @Bean
   @Qualifier("s1")
   public Class1 s1 {}

   @Bean
   @Qualifier("s2")
   public Class2 s2 () {
       Class1 s1 = s1(); 
       // ...
   }

}

然后在您的应用程序代码中基于限定符自动装配。

@Component
public class Client {

    @Autowired
    @Qualifier("s2")
    private Class2 c2;

    // ...

}

答案 1 :(得分:0)

@Configuration
    public class Config {


   @Bean
   public Class1 s1 {
   return Class1;
   }

   @Bean
   public Class2 s2 () {    
   return Class2;
      // ...
   }

    enter code here

}

下面的应用程序类具有自动连接的Bean,其方法名称为qualifier

  @Component
    public class Client {
        @Autowired
        @Qualifier("s2")
        private Class2 c2;

        // ...
    }