欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SSM的整合

程序员文章站 2022-04-30 20:20:43
框架的整合: 1. 依赖整合 aop的包: aspectweaver spring aop spring核心: spring context spring web spring webmvc spring test spring tx spring jdbc junit: junit mysql: ......

框架的整合:

1. 依赖整合
    aop的包:
        aspectweaver
        spring-aop
    spring核心:
        spring-context
        spring-web
        spring-webmvc
        spring-test
        spring-tx
        spring-jdbc
    junit:
        junit
    mysql:
        mysql-connector-java
    servlet+jsp:
        servlet-api
        jsp-api
    jstl:  
        jstl
    log:
        log4j
        slf4j-api
        slf4j-log4j12
    mybatis:
        mybatis
        mybatis-spring
    连接池:
        c3p0
        
    <properties>
        <spring.version>5.0.2.release</spring.version>
        <slf4j.version>1.6.6</slf4j.version>
        <log4j.version>1.2.12</log4j.version>
        <mysql.version>5.1.6</mysql.version>
        <mybatis.version>3.4.5</mybatis.version>    
    </properties>
     
    <dependencies>
       <!-- spring -->
       <dependency>
          <groupid>org.aspectj</groupid>
          <artifactid>aspectjweaver</artifactid>
          <version>1.6.8</version>
       </dependency>
     
       <dependency>
          <groupid>org.springframework</groupid>
          <artifactid>spring-aop</artifactid>
          <version>${spring.version}</version>
        </dependency>
     
    
       <dependency>
          <groupid>org.springframework</groupid>
          <artifactid>spring-context</artifactid>
          <version>${spring.version}</version>
        </dependency>
     
    
       <dependency>
          <groupid>org.springframework</groupid>
          <artifactid>spring-web</artifactid>
          <version>${spring.version}</version>
        </dependency>
     
    
       <dependency>
          <groupid>org.springframework</groupid>
          <artifactid>spring-webmvc</artifactid>
          <version>${spring.version}</version>
        </dependency>
     
    
       <dependency>
          <groupid>org.springframework</groupid>
          <artifactid>spring-test</artifactid>
          <version>${spring.version}</version>
        </dependency>
     
    
       <dependency>
          <groupid>org.springframework</groupid>
          <artifactid>spring-tx</artifactid>
          <version>${spring.version}</version>
        </dependency>
     
    
       <dependency>
          <groupid>org.springframework</groupid>
          <artifactid>spring-jdbc</artifactid>
          <version>${spring.version}</version>
        </dependency>
     
    
       <dependency>
          <groupid>junit</groupid>
          <artifactid>junit</artifactid>
          <version>4.12</version>
          <scope>compile</scope>
        </dependency>
     
    
       <dependency>
          <groupid>mysql</groupid>
          <artifactid>mysql-connector-java</artifactid>
          <version>${mysql.version}</version>
        </dependency>
     
    
       <dependency>
          <groupid>javax.servlet</groupid>
          <artifactid>servlet-api</artifactid>
          <version>2.5</version>
          <scope>provided</scope>
        </dependency>
     
    
       <dependency>
          <groupid>javax.servlet.jsp</groupid>
          <artifactid>jsp-api</artifactid>
          <version>2.0</version>
          <scope>provided</scope>
        </dependency>
     
    
       <dependency>
          <groupid>jstl</groupid>
          <artifactid>jstl</artifactid>
          <version>1.2</version>
        </dependency>
     
    
       <!-- log start -->
        <dependency>
          <groupid>log4j</groupid>
          <artifactid>log4j</artifactid>
          <version>${log4j.version}</version>
        </dependency>
     
    
       <dependency>
          <groupid>org.slf4j</groupid>
          <artifactid>slf4j-api</artifactid>
          <version>${slf4j.version}</version>
        </dependency>
     
       <dependency>
          <groupid>org.slf4j</groupid>
          <artifactid>slf4j-log4j12</artifactid>
          <version>${slf4j.version}</version>
        </dependency>
               <!-- log end -->
        <dependency>
          <groupid>org.mybatis</groupid>
          <artifactid>mybatis</artifactid>
          <version>${mybatis.version}</version>
       </dependency>
       <dependency>
          <groupid>org.mybatis</groupid>
          <artifactid>mybatis-spring</artifactid>
          <version>1.3.0</version>
        </dependency>
     
    
       <dependency>
          <groupid>c3p0</groupid>
          <artifactid>c3p0</artifactid>
          <version>0.9.1.2</version>
          <type>jar</type>
          <scope>compile</scope>
        </dependency>
     </dependencies>    
    
2. 配置文件整合
    applicationcontext.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: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/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">
            
             <!-- 开启注解扫描,要扫描的是service和dao层的注解,要忽略web层注解,因为web层让springmvc框架 去管理 -->    
             <context:component-scan base-package="cn.itcast">        
                 <!-- 配置要忽略的注解 -->        
                 <context:exclude-filter type="annotation" expression="org.springframework.stereotype.controller"/>    
             </context:component-scan> 
             
             <!--spring整合mybatis框架-->
            <!--配置c3p0连接池-->
            <bean id="datasource" class="com.mchange.v2.c3p0.combopooleddatasource">
                <property name="driverclass" value="com.mysql.jdbc.driver"/>
                <property name="jdbcurl" value="jdbc:mysql://localhost:3306/ssm"/>
                <property name="user" value="root"/>
                <property name="password" value="nrblwbb7"/>
            </bean>
        
            <!--配置sqlsessionfactory-->
            <bean id="sqlsessionfactory" class="org.mybatis.spring.sqlsessionfactorybean">
                <property name="datasource" ref="datasource"/>
            </bean>
        
            <!--配置映射接口所在的包-->
            <!--自动为接口生成代理对象,并将代理对象存在spring的ioc容器中-->
            <bean id="mapperscanner" class="org.mybatis.spring.mapper.mapperscannerconfigurer">
                <property name="basepackage" value="com.itheima.mapper"/>
            </bean>
        
        
            <!--配置spring框架声明式事务管理-->
            <!--配置事务管理器-->
            <bean id="transactionmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager">
                <property name="datasource" ref="datasource"/>
            </bean>
            <!--配置事务通知-->
            <tx:advice id="txadvice" transaction-manager="transactionmanager">
                <tx:attributes>
                    <tx:method name="find*" read-only="true"/>
                    <tx:method name="*"/>
                </tx:attributes>
            </tx:advice>
            <!--配置aop增强,切面-->
            <aop:config>
                <aop:advisor advice-ref="txadvice" pointcut="execution(* com.itheima.service.impl.*.*(..))"/>
            </aop:config>
        
        </beans>
    
    springmvc.xml的配置文件的约束:
        <?xml version="1.0" encoding="utf-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"
               xmlns:mvc="http://www.springframework.org/schema/mvc"
               xmlns:context="http://www.springframework.org/schema/context"
               xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
               xsi:schemalocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans.xsd
               http://www.springframework.org/schema/mvc
               http://www.springframework.org/schema/mvc/spring-mvc.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context.xsd">
        
            <!--开启注解扫描-->
            <context:component-scan base-package="com.itheima">
                <!--配置需要扫描的注解,只需要扫描controller注解就可以-->
                <context:include-filter type="annotation" expression="org.springframework.stereotype.controller"/>
            </context:component-scan>
        
            <!--配置视图解析器-->
            <bean id="internalresourceviewresolver" class="org.springframework.web.servlet.view.internalresourceviewresolver">
                <property name="prefix" value="/web-inf/pages/"/>
                <property name="suffix" value=".jsp"/>
            </bean>
        
            <!--配置静态资源过滤,不拦截-->
            <mvc:resources mapping="/js/**" location="/js/"></mvc:resources>
            <mvc:resources mapping="/images/**" location="/images/"></mvc:resources>
            <mvc:resources mapping="/css/**" location="/css/"></mvc:resources>
        
            <!--开启springmvc的注解驱动支持-->
            <mvc:annotation-driven></mvc:annotation-driven>
        
        </beans>
        
3. 创建项目的结构:
    domain
    controller
    mapper
    service
        impl
4. spring整合springmvc, 核心是需要在web.xml配置文件中加载applicationcontext.xml文件(也就是配置spring的监听器):
    <!--配置spring的监听器-->
    <listener>
        <listener-class>org.springframework.web.context.contextloaderlistener</listener-class>
    </listener>
    <!--配置加载类的配置文件-->
    <context-param>
        <param-name>contextconfiglocation</param-name>
        <param-value>classpath:applicationcontext.xml</param-value>
    </context-param>

    <!--配置前端控制器-->
    <servlet>
        <servlet-name>dispatcherservlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class>
        <!--加载springmvc的配置文件-->
        <init-param>
            <param-name>contextconfiglocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherservlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


    <!--配置编码过滤器-->
    <filter>
        <filter-name>characterencoding</filter-name>
        <filter-class>org.springframework.web.filter.characterencodingfilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterencoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
 
5. 在controller中注入service,测试是否整合成功,如果正常访问并输出,则说明spring整合springmvc成功

6. mybatis的配置
    <?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>
    
        <!--配置环境-->
        <environments default="mysql">
            <environment id="mysql">
                <transactionmanager type="jdbc"></transactionmanager>
                <datasource type="pooled">
                    <property name="driver" value="com.mysql.jdbc.driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
                    <property name="username" value="root"/>
                    <property name="password" value="nrblwbb7"/>
                </datasource>
            </environment>
        </environments>
    
    
    
        <!--引入映射配置文件-->
        <mappers>
            <package name="com.itheima.mapper" />
        </mappers>
    
    </configuration>

7. spring整合mybatis
    mybatis的配置文件总共包含了两个部分,一个是环境的配置,包括事务和数据源,这两个部分交给spring,最后还有一个映射配置文件,也交给spring去整合,最后mybatis的配置文件就可以删除了.
    
    在spring的配置文件中配置
        连接池
            <!--配置c3p0连接池-->
            <bean id="datasource" class="com.mchange.v2.c3p0.combopooleddatasource">
                <property name="driverclass" value="com.mysql.jdbc.driver"/>
                <property name="jdbcurl" value="jdbc:mysql://localhost:3306/ssm"/>
                <property name="user" value="root"/>
                <property name="password" value="nrblwbb7"/>
            </bean>
        配置sqlsessionfactory工厂
             <!--配置sqlsessionfactory-->
            <bean id="sqlsessionfactory" class="org.mybatis.spring.sqlsessionfactorybean">
                <property name="datasource" ref="datasource"/>
            </bean>
        配置mapper接口所在的包
            <!--配置映射接口所在的包-->
            <bean id="mapperscanner" class="org.mybatis.spring.mapper.mapperscannerconfigurer">
                <property name="basepackage" value="com.itheima.mapper"/>
            </bean>
            
8. 配置spring的事务管理
    <!--配置事务管理器-->
    <bean id="transactionmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager">
        <property name="datasource" ref="datasource"/>
    </bean>
    <!--配置事务通知-->
    <tx:advice id="txadvice" transaction-manager="transactionmanager">
        <tx:attributes>
            <tx:method name="find*" read-only="true"/>
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>
    <!--配置aop增强,切面-->
    <aop:config>
        <aop:advisor advice-ref="txadvice" pointcut="execution(* com.itheima.service.impl.*.*(..))"/>
    </aop:config>

log4j日志

1. 日志级别:
    trace --> debug --> info --> warn --> error --> fatal
    

提供了两个模板,一个是mybatis使用注解,一个mybatis使用xml,可以去下载查看
https://www.jianguoyun.com/p/dtytbr0q7skpbxj2_nk