當我從命令行(java -jar forward.jar)運行我的應用程序時,一切正常,沒有拋出異常。但是,當運行與Windows服務相同的應用程序時,我得到NullPointerException。Windows服務中的SQLSessionFactory拋出NullPointerException
2014年6月19日14:44:46.442 [DefaultListableBeanFactory] [AbstractBeanFactory.java] [DEBUG] [線程0]忽略bean創建上的FactoryBean類型檢查 異常: org.springframework.beans.factory.UnsatisfiedDependencyException : 在URL [jar:file:/ C:/forward.jar!/com/forward/persistence/db/PhoneNumberRepository.class]中定義的名稱'phoneNumberRepository'中創建bean的錯誤: 通過bean屬性表達的不滿足的依賴關係 ' sqlSessionFactory'創建名爲 'sqlSessionFactory'的URL在URL中定義的錯誤 [jar:file:/ C:/forward.jar!/ mybatis-context。 xml]:調用init 方法失敗;嵌套異常是java.lang.NullPointerException; 嵌套的異常是 org.springframework.beans.factory.BeanCreationException:錯誤 在URL中定義名爲'sqlSessionFactory'的bean [jar:file:/ C:/prem-forward.jar!/mybatis-context.xml] :調用 init方法失敗;嵌套的異常是顯示java.lang.NullPointerException
然後
所致: org.springframework.beans.factory.NoSuchBeanDefinitionException:否 類型[com.forward.persistence的 排位豆。 db.PhoneNumberRepository]找到 依賴關係:預計至少有1個bean符合自動連線 候選此依賴關係。依賴註解: {@ org.springframework.beans.factory.annotation.Autowired(所需=真)} 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:988) 〜[彈簧-beans-3.2.4.RELEASE.jar:3.2.4.RELEASE]在 org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:858) 〜[彈簧豆-3.2.4。 RELEASE.jar:3.2.4.RELEASE] org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770) 〜[spring-beans-3.2.4.RELEASE.jar:3.2.4 .RELEASE]在 org.springframework.beans.factory.annotation.AutowiredAnnotationBea nPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486) 〜[彈簧豆-3.2.4.RELEASE.jar:3.2.4.RELEASE] ... 28個共同框架 省略
海爾北京時間我myBatis-context.xml定義:
<import resource="classpath*:datasource-context.xml"/>
<mybatis:scan base-package="com.forward.persistence.db" />
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.forward.model"/> <!-- Register the short names of beans as aliases -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<!-- scan for mappers and let them be autowired -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.forward.persistence.db" />
</bean>
更新:PhoneNumberRepository的定義。XML是如下
<?xml version="1.0" encoding="UTF-8"?>
<resultMap type="com.forward.model.PhoneNumber" id="phoneMap">
<result column="number" property="number"/>
<result column="partition" property="partition"/>
</resultMap>
<select id="findAll" resultMap="phoneMap">
SELECT *
FROM PhoneNumber
ORDER BY number;
</select>
的MyBatis MAPPS的interphace PhoneNumberRepository這個.xml文件創建bean。
請出示com.forward.persistence.db.PhoneNumberRepository'的'定義。 –