IntelliJ IDEA Maven 整合SSH遇到的问题,及application的配置

先是遇到无法创建ContextLoaderListener,网上查了很多方法都未能解决,最后认为可能是引入的jar包版本不一造成的,未继续进行探索。

今天又遇到了无法创建<bean>,先是使用的注解的方式进行的操作,一直报无法注册的异常。后所有<bean>全部用applicationContext.xml文件进行配置,通过了。

但未能找到问题:

1、需要对spring注解的配置方法进行深入学习。

2、需要对Hibernate的HibernateTemplate和SessionFactory进行深入学习。

下面对applicationContext.xml的配置过程写上,以便加深记忆:

  1. 创建配置文件,建议命名为applicationContext.xml,放置路径为Maven(src/main/resources/applicationContext.xml)、普通SSH(src/applicationContext.xml)。
  2. web.xml文件配置applicationContext.xml的路径和监听器
       <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </context-param>
    
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
  3. 在applicationContext.xml中配置dataSource,包含数据库信息配置
       <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <!-- 数据连接信息 -->
            <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/testdb"></property>
            <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
            <property name="user" value="root"></property>
            <property name="password" value="root"></property>
    
            <!-- 其他配置 -->
            <!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
            <property name="initialPoolSize" value="3"></property>
            <!--连接池中保留的最小连接数。Default: 3 -->
            <property name="minPoolSize" value="3"></property>
            <!--连接池中保留的最大连接数。Default: 15 -->
            <property name="maxPoolSize" value="5"></property>
            <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
            <property name="acquireIncrement" value="3"></property>
            <!-- 控制数据源内加载的PreparedStatements数量。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 -->
            <property name="maxStatements" value="8"></property>
            <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 -->
            <property name="maxStatementsPerConnection" value="5"></property>
            <!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
            <property name="maxIdleTime" value="1800"></property>
        </bean>
  4. 配置sessionFactory,注入dataSource属性,注入hibernate.cfg.xml。记住LocalSessionFactoryBean
    <!-- 配置SessionFactory IOC-->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
            <!-- 指定hibernate的配置文件位置 -->
            <!--<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>-->
            <!-- 配置c3p0数据库连接池 -->
    
            <property name="dataSource" ref="dataSource"></property>
        </bean>
  5. 配置事务,记住HibernateTransactionManager
    <!-- 配置声明式事务管理(采用注解的方式) AOP-->
        <bean id="txManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        <!-- 注解驱动-->
        <tx:annotation-driven transaction-manager="txManager"/>
  6. 配置三个层的注入,action注入service属性,service注入dao属性。
        <bean id="userAction" class="com.drl.action.UserAction" scope="prototype">
            <property name="userService" ref="userService"></property>
        </bean>
    
        <bean id="userService" class="com.drl.service.UserServiceImpl">
            <property name="userDao" ref="userDao"></property>
        </bean>
    
        <bean id="userDao" class="com.drl.dao.UserDaoImpl">
            <property name="hibernateTemplate" ref="hibernateTemplate"></property>
        </bean>
    
        <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
    

      

posted on 2018-10-14 17:16  yadDRL  阅读(238)  评论(0编辑  收藏  举报

导航