gpt4 book ai didi

java - 使用 Spring 注解注入(inject)父类依赖的正确方法

转载 作者:搜寻专家 更新时间:2023-10-31 19:47:05 25 4
gpt4 key购买 nike

我有以下代码-

道.java

@Component
public class Dao extends NamedParameterJdbcDaoSupport {

}

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>

applicationContext.xml

<context:component-scan base-package="com.kshitiz" />

问题是 NamedParameterJdbcDaoSupport 需要数据源才能工作。由于这是父类(super class)的属性而不是我自己的类,所以我能想到的唯一方法是 -

@Component
public class Dao extends NamedParameterJdbcDaoSupport {
@Autowired
public void setDataSource(DataSource dataSource) {
super.setDataSource(dataSource);
}
}

这很丑陋。我可以指定我想要 Autowiring 我的 bean 的所有属性吗?有点像 -

@Component(default-autowire="byType")
public class Dao extends NamedParameterJdbcDaoSupport {

}

这在 Spring 可能吗?或者,注入(inject)父类(super class)依赖项最优雅的方法是什么?

编辑:我已经知道这可以使用我目前正在使用的 XML 来完成。我想知道仅使用注释可以做到的最好的事情。

最佳答案

不一定是你正在寻找的答案,但我会用一个中间父类(super class)来做到这一点。

public abstract class AbstractDao extends NamedParameterJdbcDaoSupport {
@Autowired
public void setDataSource(DataSource dataSource) {
super.setDataSource(dataSource);
}
}

@Component
public class Dao extends AbstractDao {
}

关于java - 使用 Spring 注解注入(inject)父类依赖的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16733509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com