目录
SSM整合中启动项目发生ContextLoaderListener错误
SSM整合中启动项目发生ContextLoaderListener错误
错误信息如下(只保留前面几行)
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1187)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:539)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:520)
at
解决方法:jar没导入;即使pom文件中的依赖都添加了,但是项目中并没有添加jar包,在醒目结构中手动将jar包添加到web目录下
SSM整合中的SqlSessionFactoryBean
进行SSM整合的时候,创建mybatis相关的对象
<!--创建sqlSession对象-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--配置数据源-->
<property name="dataSource" ref="dataSource"></property>
<!--加载mybatis配置文件-->
<property name="configLocation" value="classpath:mybatis.xml"></property>
<!--处理mapper映射文件-->
<!--<property name="mapperLocations" value="classpath:mapper/*.xml"></property>-->
</bean>
<!--配置文件扫描器-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />-->
<!--上面是扫描xml配置文件,这里是扫描mapper映射接口-->
<property name="basePackage" value="com.righteye.mapper" />
</bean>
学习的时候看到在MapperScannerConfigurer对象中有添加:
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
在mybatis-spring1.1.0以前,是通过<property name="sqlSessionFactory" ref="sqlSessionFactory"/>将SqlSessionFactory对象注入到sqlSessionFactory,这样做可能会有一个问题,就是在初始化MyBatis时,jdbc.properties文件还没被加载进来,dataSource的属性值没有被替换,就开始构造sqlSessionFactory类,属性值就会加载失败。
在1.1.0以后,MapperScannerConfigure提供了String类型的sqlSessionFactoryBeanName,通过<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />,这样先将bean name注入到sqlSessionFactoryBeanName,等到spring初始化完成后,再通过bean name构建sqlSessionFactory。
但是这句话可以不添加,原因在评论区看到:
当你有多个会话工厂的时候是必须要配置的,但是当你只有一个会话工厂的时候,就不是必填的了,会自己去找那个唯一会话工厂,就跟bean的自动注入一样
文字来源:用sqlSessionFactoryBeanName而不用sqlSessionFactory的原因_fourierr的博客-CSDN博客