ufu*_*gun 6 java xml generics spring spring-bean
有一个类有2种通用类型.
public class GenericDao<T, ID extends Serializable> implements IGenericDao<T, ID> {
...
}
Run Code Online (Sandbox Code Playgroud)
我需要从春天开始.
<bean id="myDao" class="com.xxx.yyy.GenericDao">
<qualifier type="com.xxx.yyy.Item"/> <!-- Works for T -->
<!-- Need something for ID -->
...
<property name="name" ref="value"/>
<property name="name" ref="value"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
与预选赛标签我能处理牛逼.我还需要处理ID.
你做错了什么。@Qualifier as well as <qualifier>用于注入bean的依赖关系。但是你并没有向你的 bean 中注入任何东西,也没有在任何地方注入你的 bean,你只是试图定义bean。
对于您的情况,重要的是要了解在 xml 中您正在定义将在运行时实例化的 bean 。并且在运行时泛型类型被擦除:类型擦除
也就是说,无论您可以向 Spring 提供什么泛型类型/提示,它都将完全无用,因为在运行时(当 spring 实例化 bean 时),所有泛型类型信息都将丢失。
限定符标签的正确用法是:
public class MovieRecommender {
@Autowired
@Qualifier("main")
private MovieCatalog movieCatalog;
// ...
}
Run Code Online (Sandbox Code Playgroud)
和 XML:
<?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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config/>
<bean class="example.SimpleMovieCatalog">
<qualifier value="main"/>
<!-- inject any dependencies required by this bean -->
</bean>
<bean id="movieRecommender" class="example.MovieRecommender"/>
</beans>
Run Code Online (Sandbox Code Playgroud)
对于后备匹配,bean 名称被视为默认限定符值。您可以在 spring 文档中阅读更多内容
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |