我们希望对生产和开发模式的接口有两种实现:
考虑一个接口:
public interface AccountList {
public List<Account> getAllAccounts(String userID) ;
}
有两种实现:
基础实现
@Service
public AccountListImp1 interface AccountList { ... }
和一些开发实现
@Service
@Profile("Dev")
public AccountListImp2 interface AccountList { ... }
当我尝试使用 bean 时:
public class TransferToAccount{
@Autowired
private AccountServices accountServices;
}
我收到此错误:
No qualifying bean of type [AccountList] is defined: expected single matching bean but found 2: coreSabaAccountList,dummyAccountList
在开发过程中,我们设置spring.profiles.active
如下dev
:
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>Dev</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
我假设设置配置文件名称将使 spring 对具有不同配置文件的 bean 进行分类,并根据配置文件名称使用它们。
你能告诉我如何解决这个问题吗?我可以使用@Primary,或者更改applicationContext.xml,但我认为@profile 应该可以解决我的问题。