【发布时间】:2015-05-10 01:52:24
【问题描述】:
我正在尝试将 Mybatis 与 Spring 集成。这里可以看到我的Spring应用上下文
<context:annotation-config />
<context:component-scan base-package="com" />
<tx:annotation-driven />
<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/DB" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/com/mybatis/mybatis-config.xml" />
<!--<property name="transactionFactory" ref="springManagedTransactionFactory" />-->
</bean>
<!--
<bean id="springManagedTransactionFactory" class="org.mybatis.spring.transaction.SpringManagedTransactionFactory">
<constructor-arg index="0" ref="dataSource" />
</bean> -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="registroClimaMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.mybatis.dao.RegistroClimaMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
首先我在 XML 中注释了 springManagedTransactionFactory 因为它给了我一个例外
Error creating bean with name 'springManagedTransactionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)
这是我的界面 RegistroClimaMapper。我这里没有任何注释,因为我已经定义了上下文:组件扫描。
public interface RegistroClimaMapper {
void insertarRegistroClima(RegistroClima registro) throws SQLException;
List<RegistroClima> getRegistrosClima() throws SQLException;
List<RegistroClima> getRegistrosClima(@Param("Validado") boolean Validado) throws SQLException;
}
我尝试在 ManagedBean 中使用此接口,当我要在 TablaRegistroClimaBean 的方法中使用 registroClimaPersistence 时,我得到一个 NullPointerException
@ManagedBean(name = "tablaRegClimaBean")
@ViewScoped
public class TablaRegistroClimaBean implements Serializable {
@Autowired
private RegistroClimaMapper registroClimaPersistence;
public void setRegistroClimaPersistence(RegistroClimaMapper registroClimaPersistence) {
this.registroClimaPersistence = registroClimaPersistence;
}
}
【问题讨论】:
-
你得到了什么
NullPointerException?你有没有实现RegistroClimaMapper接口的Bean?因为仅仅定义一个接口是不够的。 ;)
标签: java spring dependency-injection mybatis autowired