LookIntoEast
LookIntoEast

Reputation: 8798

How can I Inject dependency using bean method name?

For example, now I have a dependency class:

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

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

So in classA there two methods s1 and s2, and have bean method name as s1 and s2, respectively.

Now is it possible for me to inject Class2 using bean method name s2? to do sth like:

@Inject @Name private Class2 obj;

Upvotes: 0

Views: 3333

Answers (2)

sunil kumar
sunil kumar

Reputation: 1

@Configuration
    public class Config {


   @Bean
   public Class1 s1 {
   return Class1;
   }

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

    enter code here

}

The below application class has the bean autowired with the method name as qualifier

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

        // ...
    }

Upvotes: 0

user10367961
user10367961

Reputation:

You could use @Qualifier for that.

@Configuration
public class Config {

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

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

}

And in your application code autowire based on qualifier.

@Component
public class Client {

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

    // ...

}

Upvotes: 1

Related Questions