zoukankan      html  css  js  c++  java
  • 送你一套纯净版的 SSM 架构

    大致介绍一下,目前 Java 中使用比较多的框架组合就是 Spring 、Springmvc 、Mybatis ,这 3 个框架也就是我们常说的 SSM。

    前面陆陆续续也已经介绍完了这 3 个框架,今天就来整合一下它们几个。以后就可以直接拿来用了,多好,不用吭哧吭哧的搭框架了。

    首先,搭框架要有个顺序,从底层开始搞起,先处理持久层,一层一层的来才不会出现遗漏的现象。

    首先整合 Mybatis 和 Spring。 这 3 大框架都有一个核心配置文件,我们搭建环境环境主要就是在配置文件里面配置一下。

    我们知道在 Mybatis 中,核心的对象是 SqlSessionFactory, 而一旦与 Spring 整合,就要发挥 Spring 对象管家的角色,这些核心对象都会交给 Spring 来进行管理。

    得到这些对象,首先我们需要与数据库进行连接,自然就需要数据库连接池和连接数据库的 properties 文件。

       <!-- 加载数据库配置文件 -->
        <context:property-placeholder location="classpath:db.properties"/>
    
        <!-- 配置连接池 -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close">
            <property name="driverClassName" value="${jdbc.driver}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
            <property name="maxActive" value="10" />
            <property name="maxIdle" value="5" />
        </bean>

    SqlSessionFactory 在操作数据库的时候还可能会有一些特性化的操作,比方说,配置 POJO 的别名。所以 SqlSessionFactory 的生成还依赖与 Mybatis 的核心配置文件 sqlMapConfig.xml 文件。

       <!-- 配置 SqlSessionFactory 对象 -->
        <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="configLocation" value="classpath:sqlMapConfig.xml"/>
        </bean>

    Mybatis 还有一大特性就是 Mapper 动态接口开发,生成的这些接口的实现类肯定还是要交给 Spring 来管理的。

       <!-- mapper 动态代理 配置扫描路径 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.yu.dao"/>
        </bean>

    以上这些即可达到 Spring 中整合 Mybatis 的效果,其实主旨就是将 Mybatis 中的核心对象 SqlSessionFactory 和需要在 Service 层用到 DAO 层接口的实现类交由 Spring 管理。

    当然,在 Spring 的核心配置文件 applicationContext.xml 中我们还可以配置事务的操作。

       <!-- 配置事务 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
    
        <!-- 开启注解事务 -->
        <tx:annotation-driven transaction-manager="transactionManager"/>

    完成了 Spring 和 Mybatis 的合并,想想项目中分层的开发思想,我们已经解决了 DAO 和 Service 层。最后还剩下一个 Springmvc,它和 Spring 本就是一家,所以直接拿来用即可。

    说到 Springmvc 主要关注的是 web 层的配置,它的相关配置都在配置文件 springmvc.xml 中,在 web 层,我们需要调用 Service 层的对象以及将 web 层的对象注入到 Spring 中。

    所以,第一步就是配置使用注解的形式扫描包,这样,对象就都进入 Spring 容器了。

         <!-- 扫描@Controler  @Service   -->
            <context:component-scan base-package="com.yu"/>
    

      

    上次已经说过了,Springmvc 中是一个中心,若干个基本点。这里至少需要配置 3 个对象,处理器映射器,处理器适配器,视图解析器。

           <!-- 注解驱动:这一行注释就注入了 处理器映射器和处理器适配器 -->
            <mvc:annotation-driven />
    
            <!-- 视图解释器 -->
            <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="prefix" value="/WEB-INF/jsp/"/>
                <property name="suffix" value=".jsp"/>
            </bean>
    

    当然 Springmvc 还给我们提供了很多比较常用的功能,比方说文件上传、异常处理器、拦截器,这些都是可选的功能呀。

    <!-- 配置异常处理器 -->
            <bean class = "com.yu.exception.MyExceptionResolver"/>
    
            <!-- 配置处理图片的实现类 -->
            <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
                <!-- 图片最大字节数 -->
                <property name="maxUploadSize" value="100000"></property>
            </bean>
    
            <!-- 配置 Spring mvc 拦截器 -->
            <mvc:interceptors>
                <mvc:interceptor>
                    <mvc:mapping path="/**"/>
                    <!-- 自定义的拦截器类 -->
                    <bean class="com.yu.interceptor.Interceptor1"></bean>
                </mvc:interceptor>
            </mvc:interceptors>

    最后不要忘了,配置的挺好,但是项目启动,没有加载配置文件一切都是扯蛋,我们需要在 web.xml 中配置 Spring 的监听器和 Springmvc 中的老大哥前端控制器并加载相应的配置文件。

    说在最后,搭框架这种事,一年可能也搭不了一次,这么多的配置经常忘是很正常的,所以我强烈建议大家保留一份比较纯洁的配置。

    这么贴心的我,自然是给你们准备好了。

    公号后台回复【ssm】即可获取。

    PS. 欢迎关注我的个人公众号:【余同学的开发之路

    最最后: 有同学和我说,现在 Spring Boot 比较火了,是的,不否认,现在 Spring Boot  用的越来越多,但是 SSM 这种经典的架构还是有好多公司在用呀!

  • 相关阅读:
    MySQL存储引擎与索引
    最长公共子序列
    最长递增子序列
    排序算法
    二分查找及其变种
    多线程中锁的种类。
    <LeetCode>136. 只出现一次的数字
    <LeetCode>121. 买卖股票的最佳时机
    Netty 粘包/拆包应用案例及解决方案分析
    微服务
  • 原文地址:https://www.cnblogs.com/YJK923/p/10241894.html
Copyright © 2011-2022 走看看