Как я могу ввести зависимость, используя имя метода bean? - PullRequest
0 голосов
/ 19 октября 2018

Например, теперь у меня есть класс зависимостей:

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

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

Итак, в классе A есть два метода s1 и s2, и они имеют имя метода bean как s1 и s2 соответственно.

Теперь можно ли внедрить Class2, используя имя метода bean s2?делать что-то вроде:

@Inject @Name private Class2 obj;

Ответы [ 2 ]

0 голосов
/ 19 июня 2019
@Configuration
    public class Config {


   @Bean
   public Class1 s1 {
   return Class1;
   }

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

    enter code here

}

Приведенный ниже класс приложения имеет автоматическую привязку bean-компонента с именем метода в качестве квалификатора

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

        // ...
    }
0 голосов
/ 19 октября 2018

Вы можете использовать @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;

    // ...

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...