0
我将Java EE项目转换为Spring Boot 1.1.9。在转换之前,我习惯于CDI 1.2用于依赖注入。Spring Boot NoUniqueBeanDefinitionException
我有一个接口:
public interface AdminManager<V extends AdminView>
我也有这个接口的一些实现。他们是这样的:
@Repository
@Transactional(propagation=Propagation.REQUIRED)
public class DBRuleManager implements AdminManager<AdminRuleView>
@Repository
@Transactional(propagation=Propagation.REQUIRED)
public class DBFlagLogicManager implements AdminManager<AdminFlagLogicView>
现在,我已经编写了一个REST端点,是应该使用DBRuleManager
:
@Controller
@RequestMapping("/admin/rule")
public class RestAdminRule {
@Inject
private AdminManager<AdminRuleView> manager;
}
当我运行mvn spring-boot:run
我得到以下NoUniqueBeanDefinitionException
:
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.company.server.admin.AdminManager] is defined: expected single matching but found 2: DBRuleManager,DBFlagLogicManager
我读过Spring 4应该管理这种情况。那么问题是什么?这在CDI中运行良好。
奇怪,但它也适用于我。 – 2016-03-01 04:41:55
'proxyTargetClass'属性定义了Spring将用于依赖注入或AOP的代理类型。其中有两个,JDK one和CGLib。 CGLib更强大,因为它可以实现具体的类注入,而不仅仅是隐藏在接口后面的类。 'proxyTargetClass'启用CGLib。我似乎与我们的问题没有任何关系,但我认为CGLib对于思考也更加强大,并且使我们的案例也可以发挥作用。这只是没有足够的文件。 – mrik974 2016-03-01 08:35:20