2021-05-26 08:51:34,115 [localhost-startStop-1] WARN [AbstractBeanFactory.java:1524] : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'newsDao' defined in file [F:\crrs_sxkg\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\crrs_sxkg\WEB-INF\classes\com\crrs\zlzs\dao\NewsDao.class]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'sqlSessionFactory' threw exception; nested exception is java.lang.StackOverflowError
上述是其中一部分报错信息,是我在eclipse中debug运行的报错信息。正常启动项目是无任何报错信息产生的,但是debug运行就有上述的问题产生。上面提示的nested exception is java.lang.StackOverflowError 通过查询知道是产生的原因是项目中死循环或者循环依赖。但是正常启动没有任何影响。
后来在在配置文件中set注入修改了一下这个问题就解决了。
修改前:
<!-- 配置sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据库连接池 -->
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations">
<array>
<value>classpath:com/crrs/*/*/dao/maps/*.xml</value>
<value>classpath:com/crrs/*/dao/maps/*.xml</value>
</array>
</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--set注入 -->
<property name="basePackage" value="com.crrs.*.*.dao,com.crrs.*.dao" />
</property>
</bean>
修改后:
<!-- 配置sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据库连接池 -->
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations">
<array>
<value>classpath:com/crrs/*/*/dao/maps/*.xml</value>
<value>classpath:com/crrs/*/dao/maps/*.xml</value>
</array>
</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--set注入 -->
<property name="basePackage" value="com.crrs.*.*.dao,com.crrs.*.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
暂时的解决办法是添加一条set注入
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
希望对以后遇到此类问题的朋友有个好的引导。