Ksh*_*rma 5 java spring inversion-of-control spring-ioc
我有以下代码 -
Dao.java
@Component
public class Dao extends NamedParameterJdbcDaoSupport {
}
Run Code Online (Sandbox Code Playgroud)
dbContext.xml
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${db.driver}" />
<property name="url" value="${db.jdbc.url}" />
<property name="username" value="${db.user}" />
<property name="password" value="${db.password}" />
</bean>
Run Code Online (Sandbox Code Playgroud)
applicationContext.xml中
<context:component-scan base-package="com.kshitiz" />
Run Code Online (Sandbox Code Playgroud)
问题是NamedParameterJdbcDaoSupport需要数据源才能工作.既然这是超类的属性而不是我自己的类,我能想到的唯一方法就是 -
@Component
public class Dao extends NamedParameterJdbcDaoSupport {
@Autowired
public void setDataSource(DataSource dataSource) {
super.setDataSource(dataSource);
}
}
Run Code Online (Sandbox Code Playgroud)
这非常难看.我可以指定我想要自动装配我的bean的所有属性吗?就像是 -
@Component(default-autowire="byType")
public class Dao extends NamedParameterJdbcDaoSupport {
}
Run Code Online (Sandbox Code Playgroud)
这在春天有可能吗?或者,注入超类依赖项的最优雅方法是什么?
编辑: 我已经知道这可以使用我目前正在使用的XML来完成.我想知道仅使用注释可以做到的最好.
不一定是你要找的答案,但我会用中级超级班做这个.
public abstract class AbstractDao extends NamedParameterJdbcDaoSupport {
@Autowired
public void setDataSource(DataSource dataSource) {
super.setDataSource(dataSource);
}
}
@Component
public class Dao extends AbstractDao {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16086 次 |
| 最近记录: |