SSM的整合

框架的整合:

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

posted @ 2018-10-14 21:38  庄子游世  阅读(353)  评论(0编辑  收藏  举报