在Spring中定义注入的默认实现?

时间:2014-01-29 10:54:24

标签: java spring dependency-injection qualifiers

我有一个基类,由其他一些类扩展。因此,我必须提供能够注入特定实例的限定符。

我想知道我是否可以将这些类中的任何一个(例如最上层的类)标记为默认类,如果@Autowired上没有提供限定符,它将被拾取?

@Service
//@Qualifier("Parent")
class ParentRunner;

@Service
@Qualifier("Child")
class ChildRunner extends ParentRunner;

以下情况至少不起作用:

@Autowired
//@Qualifier("Parent")
private ParentRunner runner;

1 个答案:

答案 0 :(得分:4)

您可以使用@Primary标记一个实现,然后将其用作默认值。使用xml时,可以使用primary元素中的bean元素将实例设置为要使用的主bean实例。

请参阅http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Primary.html