0
项目Base
豆:春:选择默认
@Service
public class BeanDefault implements BeanBase {
}
public class App {
@Autowired
private BeanBase beanBase;
}
项目MyDerived
(Base
是在行家MyDerived
父,有许多其他衍生项目):
@Service
public class MyBean implements BeanBase {
}
而且我想类App
使用MyBean
而不会干扰其他项目(它们仍然使用BeanDefault
)。
我可以在这两个项目中修改代码Base
和MyDerived
(不能修改其他衍生项目的代码),那么该怎么做:
- 应用程序使用
BeanDefault
当它是唯一合格的豆为BeanBase
- 应用程序使用
MyBean
在我的项目
我发现,作品:
@Service
@Primary
public class MyBean implements BeanBase {
}
但我想知道,这是一个很好的做法吗?
你使用'@ Primary'的方法很好,但是你会看到现在你总是得到一个'MyBean'的实例。要有选择地获得另一个实例,您可以给该bean一个名称并使用'@ Qualifier'注释,如此处所述 - http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans- autowired-annotation-qualifiers –
@BijuKunjummen“你会看到现在你总是得到一个MyBean的实例” - 我认为这只发生在我的派生项目中......其他派生项目仍然使用BeanDefault ... – Sayakiss
啊! ,我明白,是的,你是对的,你现在的方法会适合你。 –