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

spring集成
mybatis
Spring4.x零配置框架搭建

两年前一直在做后台的纯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

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

  1. Spring AOP及事务配置三种模式详解

    Spring AOP简述 Spring AOP的设计思想,就是通过动态代理,在运行期对需要使用的业务逻辑方法进行增强. 使用场景如:日志打印.权限.事务控制等. 默认情况下,Spring会根据被代理的 ...

  2. Spring cloud Hystrix的配置属性优先级和详解

    Hystrix配置属性详解 Hystrix可以配置属性的有以下类型: Execution:控制HystrixCommand.run() 的如何执行 Fallback: 控制HystrixCommand ...

  3. spring boot 下 spring security 自定义登录配置与form-login属性详解

    package zhet.sprintBoot; import org.springframework.beans.factory.annotation.Autowired;import org.sp ...

  4. Qt零基础教程(四) QWidget详解篇

    在博客园里面转载我自己写的关于Qt的基础教程,没次写一篇我会在这里更新一下目录: Qt零基础教程(四) QWidget详解(1):创建一个窗口 Qt零基础教程(四) QWidget详解(2):QWid ...

  5. Thymeleaf 3与Spring MVC 4 整合配置

    Thymeleaf 3与Spring MVC 4 整合配置 Maven 依赖配置 Spring 相关依赖就不说了 <dependency> <groupId>org.thyme ...

  6. spring MVC、mybatis配置读写分离

    spring MVC.mybatis配置读写分离 1.环境: 3台数据库机器,一个master,二台slave,分别为slave1,slave2 2.要实现的目标: ①使数据写入到master ②读数 ...

  7. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(四)

    这一章大象将详细分析web层代码,以及使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能.     之前在使用Struts2实现MVC的注解时,是借助struts2-conventi ...

  8. Spring 基于注解零配置开发

    本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址:< Spring 基于注解零配置开发 > 一:搜索Bean 再也不用在XML文件里写什么配置信息了. Sprin ...

  9. spring mvc 结合 Hessian 配置

    spring mvc 结合 Hessian 配置 1.先在web.xml中配置 <!-- Hessian配置 --> <servlet> <servlet-name> ...

随机推荐

  1. PyQt4字体对话框QFontDialog

    字体对话框时用来显示字体的对话框部件. #!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, Qt ...

  2. Set集合遍历方式

    for(String str : set) { System.out.println(str); } for (Iterator iter = set.iterator(); iter.hasNext ...

  3. poj_2752 kmp

    题目大意 给定字符串S,求出S的所有可能相同前后缀的长度.比如: "alala"的前缀分别为{"a", "al", "ala&qu ...

  4. LeetCode——Single Number II

    Description: Given an array of integers, every element appears three times except for one. Find that ...

  5. python的内存管理与垃圾回收机制学习

    一.python内存申请: 1.python的内存管理分为六层:最底的两层有OS控制.第三层是调用C的malloc和free等进行内存控制.第四层第五层是python的内存池.最上层使我们接触的直接对 ...

  6. linux动态查看某组进程状态的办法

    这里记录一下我监控某组进程的解决办法. 1.首先要获取要监控的进程的进程id,如果你要勇ps grep 那你就out了,强大的linux系统有一个pidof命令,用来查找相关进程的进程id,其实还有一 ...

  7. ListView之EmptyView

    From:http://blog.csdn.net/xiangqiao123/article/details/17994099 继承ListActivity比较方便 最新开发一个应用程序,需要用到当L ...

  8. java如何计算两个日期之间相差多少天?

    java如何计算两个日期之间相差多少天? public static void main(String [] args) { Date now = new Date(); Calendar cal = ...

  9. mysql表大小写问题

    查看大小写区分 mysql> show variables like "%case%"; linux在mysql安装完后默认:区分表名的大小写,不区分列名的大小写 改变表名的 ...

  10. pandas将字段中的字符类型转化为时间类型,并设置为索引

    假设目前已经引入了 pandas,同时也拥有 pandas 的 DataFrame 类型数据. import pandas as pd 数据集如下 df.head(3) date open close ...