【发布时间】:2014-12-29 23:17:32
【问题描述】:
我在我的项目中主要使用@Autowired 和@Component 注释。但是,我将使用DataSource 类进行数据库操作。
所以,我在 dispatcher-servlet.xml 中使用它:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/market"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</bean>
在我的 dao 类中,dataSource 的设置器是:
@Autowired
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
this.jdbcTemplateObject = new JdbcTemplate(dataSource);
}
但是,这并不能解决问题。我的jdbcTemplateObject 是null。
如果我不使用“context:component scan ...”,而是使用经典的 spring bean,而不使用 @Autowired 注释,那么一切正常。
我可以使用我的数据库。但是,我不想在我的 xml 文件中一一声明所有 bean。随着项目的发展,它将不实用。我怎么解决这个问题 ?是否可以在我的dispatcher-servlet.xml 中将dataSource 声明为组件,所以@Autowired 适用于数据源?
【问题讨论】:
-
当你在字段上使用
@Autowired时,Spring 会查找依赖项并直接注入它们,如果设置方法在这里没有意义。 -
Spring 会做到这一点,您不需要二传手。您可以在 xml 中使用 jdbctemplate 并自动装配它。
-
非常感谢。我不知道我不需要二传手。没有 setter 怎么设置呢?
-
输入它作为答案,以便我将其标记为正确。
标签: java mysql xml spring-mvc datasource