您的位置:首页 > 编程语言 > Java开发

Spring注解解释(@Primary、@Qualifier)

2016-08-28 00:00 483 查看

@Primary/@Qualifier

当你一个接口的实现类有多个的时候,你通过
@Component
来注册你的实现类有多个,但是在注入的时候使用
@Autowired


这样问题就来了,Spring就不知道你注入哪个,那现在就可以通过下面两个办法解决:

@Primary
优先考虑,优先考虑被注解的对象注入

@Qualifier
名字声明,声明后对名字进行使用

@Qualifier 看看官网怎么用

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
<context:annotation-config/>

<bean class="example.SimpleMovieCatalog">
<qualifier value="main"/>

<!-- inject any dependencies required by this bean -->
</bean>

<bean class="example.SimpleMovieCatalog">
<qualifier value="action"/>

<!-- inject any dependencies required by this bean -->
</bean>

<bean id="movieRecommender" class="example.MovieRecommender"/>

</beans>

上面声明了,下面用

public class MovieRecommender {

@Autowired
@Qualifier("main")
private MovieCatalog movieCatalog;

// ...

}

理解

注解备注
@Primary
优先方案,被注解的实现,优先被注入
@Qualifier
先声明后使用,相当于多个实现起多个不同的名字,注入时候告诉我你要注入哪个
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring 注解