• SSM-整合简单配置


    首先说明Spring和Mybatis的版本:

      Spring:3.2.4

      Mybatis:3.3.0

    使用了C3P0连接池和Log4J日志,下面是jar包总览:

    然后是项目目录总览:

      为了能够让项目跑一个HelloWorld,添加了简单User业务,接下来就看一下配置文件的内容:

      application.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd">
    
        <context:property-placeholder location="classpath:c3p0-config.properties" />
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
            destroy-method="close">
            <property name="driverClass" value="${jdbc.driverClass}" />
            <property name="jdbcUrl" value="${jdbc.jdbcUrl}" />
            <property name="user" value="${jdbc.user}" />
            <property name="password" value="${jdbc.password}" />
            <property name="minPoolSize" value="${jdbc.miniPoolSize}" />
            <property name="maxPoolSize" value="${jdbc.maxPoolSize}" />
            <property name="initialPoolSize" value="${jdbc.initialPoolSize}" />
            <property name="maxIdleTime" value="${jdbc.maxIdleTime}" />
            <property name="acquireIncrement" value="${jdbc.acquireIncrement}" />
            <property name="acquireRetryAttempts" value="${jdbc.acquireRetryAttempts}" />
            <property name="acquireRetryDelay" value="${jdbc.acquireRetryDelay}" />
            <property name="testConnectionOnCheckin" value="${jdbc.testConnectionOnCheckin}" />
            <property name="automaticTestTable" value="${jdbc.automaticTestTable}" />
            <property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}" />
        </bean>
        
        <bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
        
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="configLocation" value="classpath:mybatis/mybatis.xml" />
        </bean>
        
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.smy.mapper" />
        </bean>
        
    </beans>  

        因为Spring整合Mybatis,所以数据源和SqlSessionFactory以及事务都由Spring的Bean容器来统一管理。

        首先我们要配置我们的数据源DataSource,这里因为我使用了C3P0连接池,所以就使用了<context:property-placeholder  /> 标签来引入我的C3P0配置文件,然后通过${key} 来读取值。

        配置SqlSessionFactoryBean,为什么要配置SqlSessionFactory呢? 我们要不要使用Mybatis框架来操作数据库?答案肯定是要,那就要配置,配置之后我们才能够得到Mapper映射,生成代理对象来操作数据库,除了注入DataSource之外,还要注入Mybatis配置文件的路径。

        接下来还要配置Mapper映射文件Bean,这个有多种配置方法,除了上面一种,还可以直接在SqlSessionFactoryBean中直接注入,也可以直接在Mybatis配置文件中配置,但是不管在哪配置,只配置一遍就行,多处配置会出现问题,之前有亲身测试过。

      

      springmvc.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd
             http://www.springframework.org/schema/mvc
             http://www.springframework.org/schema/mvc/spring-mvc.xsd
             http://www.springframework.org/schema/aop 
             http://www.springframework.org/schema/aop/spring-aop.xsd
             http://www.springframework.org/schema/tx
              http://www.springframework.org/schema/tx/spring-tx.xsd">
        <mvc:annotation-driven />
        <context:component-scan base-package="com.smy.controller,com.smy.service" />
        <bean id="viewResolver"
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/" />
            <property name="suffix" value=".jsp" />
        </bean>
        <import resource="classpath:/spring/application.xml"/>
    </beans>

        <mvc:annotation-driven /> :会自动注册 DefaultAnnotationHandlerMapping 与 AnnotationMethodHandlerAdapter 两个bean,是spring MVC为 @Controller 分发请求所必须的,当然你要是想要手动配置那两个Bean,Spring也不会反对。

        <context:component-scan /> :有一个 use-default-filters 属性,改属性默认为true,这就意味着会扫描指定包下的全部的标有 @Component 的类,并注册成bean.也就是 @Component 的子注解 @Service @Reposity 等。所以如果仅仅是在配置文件中这么写 <context:component-scan base-package="com.smy" />Use-default-filter此时为true那么会对 base-package 包或者子包下的所有的进行java类进行扫描,并把匹配的java类注册成bean。

        viewResolver:视图解析器,prifixsuffix 是在Controller 处理请求之后返回 ModelAndView ,然后由视图解析器来自动添加前缀和后缀。

        import:引入 Spring 其它配置文件,在配置文件分的比较多的时候,也可以使用通配符来引入。

        这里主要配置了MVC必要的三大工具,处理器映射器、处理器适配器、视图解析器。

      

      mybatis.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <settings>
            <setting name="logImpl" value="LOG4J" />
            <setting name="autoMappingBehavior" value="FULL"/>
        </settings>
        
        <typeAliases>
            <package name="com.smy.pojo" />
        </typeAliases>
    </configuration>

        在Mybatis配置文件中,只要配置全局行为就可以,如果没有整合Spring,当然还要配置数据源,这里我把设置别名配置在了Mybatis配置文件中,前面有说过,这里也可以把扫描Mapper的配置放进来。

       web.xml 

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
      <display-name>SSM2017-10-12</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      
      <servlet>
          <servlet-name>springmvc</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/springmvc.xml</param-value> //这里配置的是DispatchServlet初始化读取MVC配置文件,这是最重要的一步
        </init-param>
          <load-on-startup>1</load-on-startup>
      
      </servlet>
      <servlet-mapping>
          <servlet-name>springmvc</servlet-name>
          <url-pattern>/</url-pattern>
      </servlet-mapping>
    </web-app>

      c3p0-config.properties

    jdbc.driverClass = com.mysql.jdbc.Driver
    jdbc.jdbcUrl = jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8
    jdbc.user = root
    jdbc.password = 123456
    jdbc.miniPoolSize = 1
    jdbc.maxPoolSize = 20
    jdbc.initialPoolSize = 1
    jdbc.maxIdleTime = 25000
    jdbc.acquireIncrement = 1
    jdbc.acquireRetryAttempts = 30
    jdbc.acquireRetryDelay = 1000
    jdbc.testConnectionOnCheckin = true
    jdbc.automaticTestTable = c3p0TestTable
    jdbc.idleConnectionTestPeriod = 18000
    jdbc.checkoutTimeout=3000

      log4j.properties

    # rootLogger是所有日志的根日志,修改该日志属性将对所有日志起作用
    # 下面的属性配置中,所有日志的输出级别是info,输出源是con
    log4j.rootLogger=debug,info,con
    # 定义输出源的输出位置是控制台
    log4j.appender.con=org.apache.log4j.ConsoleAppender
    # 定义输出日志的布局采用的类
    log4j.appender.con.layout=org.apache.log4j.PatternLayout
    # 定义日志输出布局
    log4j.appender.con.layout.ConversionPattern=%d{MM-dd HH:mm:ss}[%p]%c%n -%m%n
  • 相关阅读:
    python爬虫如何提高效率
    对 js加密数据进行爬取和解密
    爬虫之数据解析
    requests模块的基本使用
    python的零碎知识
    Django中多表关联的展示问题:
    ModelForm的基本用法:
    websocket的应用---Django
    DOM
    BOM
  • 原文地址:https://www.cnblogs.com/gudu1/p/7658544.html
Copyright © 2020-2023  润新知