// com \ src \ myproject\servicesにあります
package com.src.myproject.services;
public interface IMyService {
public boolean Method1();
}
// com \ src \ myproject\servicesにあります
package com.src.myproject.services;
public class MyService implements IMyService {
@Autowired
private TestMapper testMapper;
@Override
public boolean Method1() {
return gettestMapper().GetOrder(1); //Get null pointer exception as testMapper is null in debug mode
}
public TestMapper gettestMapper(){
return testMapper;
}
public void settestMapper(TestMapper testMapper){
this.testMapper=testMapper;
}
}
私のmapper.java
ファイルは下にありますcom\src\mappers
対応するmapper.xml
は下にありますsrc\main\resources\com\src\myproject\mappers
私のservelet-context.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:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<context:property-placeholder location="/WEB-INF/spring/jdbc.properties,/WEB-INF/spring/mybatis.properties" />
<context:component-scan base-package="com.src.myproject.controllers" />
<context:component-scan base-package="com.src.myproject.services" />
<!-- Enable annotation style of managing transactions -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- Declare a datasource that has pooling capabilities -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" p:driverClass="${app.jdbc.driverClassName}"
p:jdbcUrl="${app.jdbc.url}" p:user="${app.jdbc.username}" p:password="${app.jdbc.password}"
p:acquireIncrement="10" p:idleConnectionTestPeriod="60" p:maxPoolSize="100"
p:maxStatements="50" p:minPoolSize="10" />
<!-- Declare a transaction manager -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"
autowire="byName" />
<!-- define the SqlSessionFactory, notice that configLocation is not needed when you use MapperFactoryBean -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="${typeAliasesPackage}" />
</bean>
<!-- scan for mappers and let them be autowired -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.src.myproject.mappers" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
</beans>
サービスファイルの自動配線は常にnullであり、自動ワイヤを介してマッパーファイルから任意のメソッドを使用しようとするとnullref例外が発生します。