SSM整合问题

目录

SSM整合中启动项目发生ContextLoaderListener错误

SSM整合中的SqlSessionFactoryBean        


 

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博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值