[英]Autowiring to different beans
我有一個核心模塊,其中包含一個類:
@Autowired
private BaseDao dao;
BaseDao接口的實現很少:
class JdbcBaseDaoImpl implements BaseDao {...}
class HibernateBaseDaoImpl implements BaseDao {...}
並且很少有模塊使用核心模塊中的那個類(使用maven)。 但是在第一個模塊中,我想在核心模塊的那個領域和第二個模塊中使用JdbcBaseDaoImpl
實現,以使用HibernateBaseDaoImpl
實現。
怎么做? 換句話說,如何在核心模塊中使用類
@Autowired
@Qualifier("jdbcBaseDaoImpl")
private BaseDao dao;
在第一個模塊和
@Autowired
@Qualifier("hibernateBaseDaoImpl")
private BaseDao dao;
在第二個模塊?
注釋是@Qualifier("<name>")
。 有關詳細信息,請參閱此
順便說一下,Java EE相當於@Resource(name="<name>")
。
如果這些模塊將在相同的進程空間中運行,則不可能基於代碼路徑有條件地將不同的實現注入到核心模塊中的相同變量中。 您可以將BaseDao引用推送到依賴模塊,為每個模塊注入適當的模塊,並將其作為對需要它的核心模塊方法的引用傳遞。
如果這些模塊將在不同的進程空間中運行,那么您可以在特定於進程的spring配置文件中為每個模塊配置適當的實現(我們這樣做是為了分離生產和單元測試階段的實現)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.