Spring-SSM的整合(上)

简介: Spring-SSM的整合(上)

SSM整合到底整合什么?

1、spring和mybaits整合(数据源》sessionFactory》session)

2、spirng和springMVC整合

为什么要整合到一起?

统一指挥、让两个框架中用到的类和对象,都让spring管理。好处:无缝衔接、用到spring提供的很多工具。

由谁来整合?

mybatis的主配置文件

spring的配置文件

springMVC的配置文件

web.xml

、mybatis配置文件

这个文件中没有必须添加的内容。因为他的主要内容:数据源连接信息和子配置文件Mapper信息都会在Spring的配置文件中体现

但是我们一般配置以下内容

<configuration>
    <!--配置mybatis的log实现为LOG4J-->
    <settings>
        <setting name="logImpl" value="LOG4J"></setting>
    </settings>
</configuration>

、SpringMVC配置文件

这个配置文件的内容要怎么记忆?首先我们要清楚SpringMVC的作用是什么。因为SpringMVC就是用来做页面之间的跳转和数据传递的。所以它的主配置文件的内容都是和这两方面相关的。

另外SpringMVC是Spring的一个子框架 ,所以SpringMVC和Spring之间不需要整合

<!--扫描业务逻辑层的注解-->
    <context:component-scan base-package="xinmiao.controller,xinmiao.service"></context:component-scan>
    <mvc:annotation-driven>
        <mvc:message-converters>
            <!-- 这是一个消息转换器 如果返回的值是文本类型的 解决控制层到视图层的中文乱码问题-->
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>application/json;charset=UTF-8</value>
                        <value>text/html;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
            <!-- 这是一个消息转换器 如果返回的是实体类或者集合 解决控制层到视图层的中文乱码问题-->
            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=UTF-8</value>
                        <value>application/json</value>
                    </list>
                </property>
                <property name="features">
                    <list>
                        <!-- Date的日期转换器 -->
                        <value>WriteDateUseDateFormat</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
<!--    配置多视图解析管理器-->
    <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<!--        是否启用format参数支持,默认为true-->
        <property name="favorParameter" value="true"/>
<!--        是否支持.html,.json,.xml等扩展名,默认为true-->
        <property name="favorPathExtension" value="true"/>
<!--        默认ContentType-->
        <property name="defaultContentType" value="text/html"/>
<!--        配置映射关系-->
        <property name="mediaTypes">
            <value>
                json=application/json
                xml=application/xml
                html=text/html
            </value>
        </property>
    </bean>
<!--    View解析定义,内容协商视图解析器;根据contentNegotiationManager使用的不同mediaTypes 决定不同的view进行响应 默认使用-->
    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<!--        内容协商管理器 用于决定media type-->
        <property name="contentNegotiationManager" ref="contentNegotiationManager"/>
<!--        默认视图-->
        <property name="defaultViews">
            <list>
                <bean class="com.alibaba.fastjson.support.spring.FastJsonJsonView">
                    <property name="charset" value="UTF-8"/>
                </bean>
            </list>
        </property>
        <property name="viewResolvers">
            <list>
                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="prefix" value="/WEB-INF/jsp/"/>
                    <property name="suffix" value=""/>
                </bean>
            </list>
        </property>
    </bean>
<!--    解决静态资源加载的问题-->
    <mvc:resources mapping="/static/**" location="/static/"></mvc:resources>
    <!-- 配置MultipartResolver,用于上传文件,使用spring的CommonsMultipartResolver -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="5000000"/>
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

三、spring的配置文件

之前我们已经明白了,spirngMVC不需要spring刻意的去整合,所以spirng中最主要的内容就是整合mybatis。那mybatis我们到底是要整合哪些内容呢?

首先我们要明白mybatis的最根本的目的是要执行sql语句。而sql语句写在Mapper子配置文件中,sql语句最终要再数据库中执行,并且有些sql是需要有事务管理的。

所以spring中首先要把数据源管理起来,还需要把mybaits的主配置文件和子配置文件Mapper管理起来,管理这两样用的Ioc。

接下来我们需要使用AOP在业务逻辑层切入自带的事务管理器。

最后就是把业务逻辑层的bean也加入进来。

<!-- 加载属性文件-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
    <!--此数据源可以替换-->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driver}"></property>
        <property name="url" value="${url}"></property>
        <property name="username" value="${user}"></property>
        <property name="password" value="${pwd}"></property>
    </bean>
    <!--整合sqlSessionfactory 包涵了数据源(dataSource)配置文件(config)和映射文件(mapper)-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" >
        <property name="dataSource" ref="dataSource"></property> <!--数据源-->
        <property name="configLocation" value="classpath:mybatis.xml"></property>  <!--配置文件-->
        <property name="mapperLocations" value="classpath:mappers/*.xml"></property>  <!--映射文件-->
    </bean>
    <!--扫描mapper接口-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="xinmiao.mapper"></property>
    </bean>
    <!--扫描业务逻辑层的注解-->
    <context:component-scan base-package="xinmiao"></context:component-scan>
    <!--添加声明式的事务管理器  管理指定的数据源-->
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--把事务管理器,变成增强(通知),同时指定了方法的事务传播机制-->
    <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="del*" propagation="REQUIRED"/>
            <tx:method name="get*" propagation="REQUIRED" read-only="true"/>
        </tx:attributes>
    </tx:advice>
    <aop:config>
        <aop:pointcut id="servicePointcut" expression="execution(* xinmiao.service.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="servicePointcut"></aop:advisor>
    </aop:config>
    <import resource="springmvc.xml"></import>

四、web.xml配置文件

上面我们配置好了三个框架,框架配置的再好,也得有初始化的地方。自然初始化的地方就是在web.xml中。

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
  <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:springContext.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <filter>
    <filter-name>encodingFilter</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>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>


相关文章
|
2月前
|
Java 关系型数据库 MySQL
ssm(Spring+Spring mvc+mybatis)
ssm(Spring+Spring mvc+mybatis)
20 0
|
2月前
|
JSON Java 数据库连接
【spring(五)】SpringMvc总结 SSM整合流程
【spring(五)】SpringMvc总结 SSM整合流程
|
8月前
|
前端开发 Java 测试技术
Spring、SpringMVC、SpringBoot、SpringCloud 框架常用注解说明
Spring、SpringMVC、SpringBoot、SpringCloud 框架常用注解说明
|
9月前
|
前端开发 Java Spring
Spring-SSM的整合(下)
Spring-SSM的整合(下)
|
4月前
|
Java 数据库连接 数据格式
SSM-Spring+SpringMVC+MyBatis整合案例从0到1
SSM-Spring+SpringMVC+MyBatis整合案例从0到1
49 0
|
5月前
|
SQL Java 数据库连接
【SSM】Spring + SpringMVC +MyBatis 框架整合
【SSM】Spring + SpringMVC +MyBatis 框架整合
33 0
|
5月前
|
Java 应用服务中间件 Maven
Spring&SpringMVC&SpringBoot
Spring&SpringMVC&SpringBoot
41 0
|
5月前
|
Java 数据库连接 Spring
SpringBoot中Spring IOC的运用
SpringBoot中Spring IOC的运用
39 0
|
12月前
|
XML Java 数据库
SSM 之 Spring (下)
SSM 之 Spring (下)
67 0
|
12月前
|
XML SQL Java
SSM 之 Spring(上)
SSM 之 Spring(上)
55 0