Reputation: 8798
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
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
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