zoukankan      html  css  js  c++  java
  • Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1)

    Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍

    两年前一直在做后台的纯Java开发,很少涉及web开发这块,最近换了个纯的互联网公司,需要做Web后台管理系统,之前都是用xml配置的项目,接触了公司Spring4.x的零配置项目,觉得非常有感觉,不仅仅配置简单,而且条理清晰,所以,这里把学习的内容记录下来,一来加深对这块技术的印象,另外准备做个简单的教程,如果给其他人分享的时候还可以拿来直接用。

    首先讲讲为什么要做框架搭建?现在的开源软件,都是一些很有想法的一群技术大牛利用业余时间弄出来的,而刚开始做框架的时候,是要解决他们工作中面临的一些问题?比如解决javaBean的依赖管理,出现了spring,解决 数据库 访问操作的问题诞生了 hibernate ,Mybatis,解决业务逻辑代码与视图代码的分离,诞生了Struts,SpringMVC......可能你会问,为什么不直接来一个包含全部解决方案的框架呢?我个人认为有以下几个原因:

    一、刚开始的时候,框架只解决某个业务领域的问题,且这个框架的创始人精力有限,不可能做到面面俱到!

    二、代码的维护、重构、升级的时间其实比开发更耗时间;

    三、大而全的框架适应力不如解决某一领域框架好,软件开发面对的需求变化和场景已经足够多了,一个大而
    全的框架必定会因为种种原因,限制其发展,就像spring-side等框架。因为如果它已经与其他第三方框架集成好了,如果用户需要对某一部分修改,会涉及很多变更和适配。

    四、由于这些软件受众小,遇到一些特殊场景,如果要集成不常用的第三方库和内容,学习成本、稳定性、安全性等因素变得比较重要了。虽然它已经将很多库集成了,看起来不需要那么繁琐的配置很管理,其实,如果你需要做一些适配和修改的工作,这种大集成的套件往往对技术的要求又很高,不是一般人就能改、也不是一时半会就能改出来的!

    所以,用现有成熟、稳定的库去搭建一个属于自己的框架,对技术要求、学习成本的需求更低一点!


    先来看看这几个框架的关系图:

     



    框架关系

     

    先来说说零配置的实现原理:

    Servlet3.0规范,支持将web.xml相关配置也硬编码到代码中[servlet,filter,listener,等等];

    并由 javax.servlet.ServletContainerInitializer 的实现类负责在容器启动时进行加载,spring提供了一个实现类 *SpringServletContainerInitializer (在 spring-web包 中的org.springframework.web目录),该类会 调用所有 org.springframework.web.WebApplicationInitializer实现类的 onStartup 方法,将相关的组件注册到服务器;

    而我们的WebApplicationInitializer继承自AbstractAnnotationConfigDispatcherServletInitializer,而AbstractAnnotationConfigDispatcherServletInitializer就实现了org.springframework.web.WebApplicationInitializer的onStartup方法,所以WebApplicationInitializer就是整个项目的关键,我们的整个项目就是通过它来启动。
    这个WebApplicationInitializer在我们例子的代码中会详细介绍。


    由于篇幅较长,所以我把它分成了以下几个部分,逐一进行讲解:
    (一)基本介绍
    (二)基础框架搭建
    (三)实现最基本的登录处理
    (四)任务调度管理
    (五)Redis缓存配置
    (六)安全框架集成
    (七) git版本源代码下载

    由于时间的关系,不可能一下全写完,所以会陆续更新。

    提示:想学习Spring零配置的内容,最好是下载源码运行,然后自己照着写一遍,加深对框架的理解和认识。


    转载:http://blog.csdn.net/chwshuang/article/details/52164059

  • 相关阅读:
    为图片指定区域添加链接
    数值取值范围问题
    【leetcode】柱状图中最大的矩形(第二遍)
    【leetcode 33】搜索旋转排序数组(第二遍)
    【Educational Codeforces Round 81 (Rated for Div. 2) C】Obtain The String
    【Educational Codeforces Round 81 (Rated for Div. 2) B】Infinite Prefixes
    【Educational Codeforces Round 81 (Rated for Div. 2) A】Display The Number
    【Codeforces 716B】Complete the Word
    一个简陋的留言板
    HTML,CSS,JavaScript,AJAX,JSP,Servlet,JDBC,Structs,Spring,Hibernate,Xml等概念
  • 原文地址:https://www.cnblogs.com/oucbl/p/6722453.html
Copyright © 2011-2022 走看看