Ste*_*art 7 java spring inversion-of-control autowired spring-boot
说我有一个界面
interface IPerson {...}
Run Code Online (Sandbox Code Playgroud)
我有此接口的两种实现
@Component
class Programmer implements IPerson {...}
@Component
class LionTamer implements IPerson {...}
Run Code Online (Sandbox Code Playgroud)
说我有一个使用Autowire注入的课程
@Component
class SomethingThatDoesStuff {
@Autowired
public SomethingThatDoesStuff (IPerson someone) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
Spring如何知道要注入的实现?有没有办法告诉spring要注入什么实现?可以通过注释完成此操作,还是必须定义某种工厂?如果可以,怎么办?
如@passion所述,您应该使用bean命名(标准Spring IoC功能):
@Component("programmer")
class Programmer implements IPerson {...}
@Component("lionTamer")
class LionTamer implements IPerson {...}
@Component
class SomethingThatDoesStuff {
@Autowired
public SomethingThatDoesStuff (@Qualifier("programmer") IPerson someone) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3104 次 |
最近记录: |