关于Spring总结(必看篇)

Spring引入

传统的基于mvc的项目框架结构:Entity / dao / service / action

简单用户访问流程:/user.action ----> Tomcat (服务器创建Action、Service、dao

引出思考:

1. 对象创建创建能否写死?

2. 对象创建细节

对象数量

action 多个 【维护成员变量】

service 一个 【不需要维护公共变量】

dao 一个 【不需要维护公共变量】

创建时间

action 访问时候创建

service 启动时候创建

dao 启动时候创建

3. 对象的依赖关系

action 依赖 service

service依赖 dao

总结:Spring就是解决上面的问题的.简单来说,就是处理对象的创建的、以及对象的依赖关系,降低组件之间的耦合度,实现软件各层之间的解耦。

Spring介绍

•Spring是什么?

Spring是一个非常活跃的开源框架, 它是一个基于IOC和AOP来构架多层JavaEE系统的框架,它的主要目地是简化企业开发,Spring以一种非侵入式的方式来管理你的代码, Spring提倡”最少侵入”,这也就意味着你可以适当的时候安装或卸载Spring。

•具体描述Spring

1.轻量级:Spring 是非侵入性的>基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API,基础版本的Spring框架大约只有2MB.

组件/框架设计
侵入式设计
 引入了框架,对现有的类的结构有影响;即需要实现或继承某些特定类。
 例如: Struts框架
非侵入式设计
 引入了框架,对现有的类结构没有影响。
 例如:Hibernate框架 / Spring框架

2.依赖注入(DI --- dependency injection、IOC)

Spring使用控制反转技术实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象。
 a、IOC Inversion on Control , 控制反转
 其思想是反转资源获取的方向. 传统的资源查找方式要求组件向容器发起请求查找资源. 作为回应, 容器适时的返回资源. 而应用了 IOC 之后, 则是容器主动地将资源推送给它所管理的组件, 组件所要做的仅是选择一种合适的方式来接受资源. 这种行为也被称为查找的被动形式。可以简单的理解为对象的创建交给外部容器完成,这个就叫做控制反转.
 b、依赖注入, dependency injection
 IOC 的另一种表述方式:即组件以一些预先定义好的方式(例如: setter 方法)接受来自如容器的资源注入. 相对于 IOC 而言,这种表述更直接。
两者区别:
 控制反转: 解决对象创建的问题 【对象创建交给别人】
 依赖注入: 在创建完对象后,对象的关系的处理就是依赖注入 【通过set方法依赖注入】

3.面向切面编程(AOP --- aspect oriented programming)

a、采用了面向切面编程来实现很多基础但是与业务逻辑无关的功能的解耦,比如:事务管理、日志、权限验证等。
b、AOP 的主要编程对象是切面(aspect), 而切面模块化横切关注点.
c、在应用 AOP 编程时, 仍然需要定义公共功能, 但可以明确的定义这个功能在哪里, 以什么方式应用, 并且不必修改受影响的类. 这样一来横切关注点就被模块化到特殊的对象(切面)里.
关注点:
 重复代码就叫做关注点;
切面:
 关注点形成的类,就叫切面(类)!
 面向切面编程,就是指对很多功能都有的重复的代码抽取,再在运行的时候往业务方法上动态植入“切面类代码”。
切入点:
 执行目标对象方法,动态植入切面代码。
 可以通过切入点表达式,指定拦截哪些类的哪些方法; 给指定的类在运行的时候植入切面类代码。

4.容器:Spring 是一个容器, 因为它包含并且管理应用对象的生命周期

5.框架:Spring 实现了使用简单的组件配置组合成一个复杂的应用. 在 Spring 中可以使用 XML 和 Java 注解组合这些对象

6.一站式

Spring提供了一站式解决方案:
1) Spring Core spring的核心功能: IOC容器, 解决对象创建及依赖关系
2) Spring Web Spring对web模块的支持。
  可以与struts整合,让struts的action创建交给spring
  spring mvc模式
3) Spring DAO Spring 对jdbc操作的支持
  【JdbcTemplate模板工具类】
4) Spring ORM spring对orm的支持:
  既可以与hibernate整合,【session】
  也可以使用spring的对hibernate操作的封装
5)Spring AOP 切面编程
6)SpringEE spring 对javaEE其他模块的支持

以上这篇关于Spring总结(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • springmvc 参数绑定总结

    最近在学习springmvc,今天把springmvc 参数绑定给整理一下,也算个学习笔记吧! @RequestParam 绑定单个请求 RequestMapping(value = "/form2") @ResponseBody public String form2(@RequestParam String name){ logger.info("name=" + name ); return ""; } @RequestParam 有req

  • 关于Spring总结(必看篇)

    Spring引入 传统的基于mvc的项目框架结构:Entity / dao / service / action 简单用户访问流程:/user.action ----> Tomcat (服务器创建Action.Service.dao 引出思考: 1. 对象创建创建能否写死? 2. 对象创建细节 对象数量 action 多个 [维护成员变量] service 一个 [不需要维护公共变量] dao 一个 [不需要维护公共变量] 创建时间 action 访问时候创建 service 启动时候创建 da

  • 老生常谈spring boot 1.5.4 日志管理(必看篇)

    spring boot日志默认采用logback进行输出,你可以对logback进行定制化,方法如下: 在resources文件夹下建立logback.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- base.xml in the spring-boot jar, --> <include resource="org/sprin

  • 对dbunit进行mybatis DAO层Excel单元测试(必看篇)

    DAO层测试难点 可重复性,每次运行单元测试,得到的数据是重复的 独立性,测试数据与实际数据相互独立 数据库中脏数据预处理 不能给数据库中数据带来变化 DAO层测试方法 使用内存数据库,如H2.优点:无需清空无关数据:缺点:单元测试中需要进行数据库初始化过程,如果初始化过程复杂,单元测试工作量增大 使用dbunit.优点:数据库初始化简单,大大减轻单元测试工作量:缺点:目前官方提供jar包只支持xml格式文件,需要自己开发Excel格式文件 基于dbunit进行DAO单元测试 应用环境:Spri

  • 一个牛人给Java初学者的建议(必看篇)

    给初学者之一:浅谈Java及应用学java 从不知java为何物到现在一个小小的j2ee项目经理虽说不上此道高手,大概也算有点斤两了吧每次上网,泡bbs逛论坛,没少去java相关的版 面总体感觉初学者多,高手少,精通的更少由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间还有一个很重要的原因就是java这门语 言更适合商业应用所以高校里大部分博士老师们对此语言的了解甚至不比本科生多在这种环境下,很多人对java感到茫然,不知所措,不懂java能做什么即 便知道了java很有用,

  • java 获取HttpRequest Header的几种方法(必看篇)

    在开发应用程序的过程中,如果有多个应用,通常会通过一个portal 门户来集成,这个portal  是所有应用程序的入口,用户一旦在portal 登录之后,进入另外一个系统,就需要类似的单点登录(SSO). 进入各个子系统的时候,就不需要再次登录, 当然类似的功能,你可以通过专业的单点登录软件来实现,也可以自己写数据库token 等方式来实现.其实还有一个比较简单的方法,就是通过 portal 封装已经登录过的用户的消息,写到http header 之中,然后把请求forward 到各个子系统中

  • Intellij IDEA 2019 最新乱码问题及解决必杀技(必看篇)

    大家在使用 Intellij IDEA 的时候会经常遇到各种乱码问题,甚是烦扰. 栈长也偶尔会用下IDEA,也有一些解决乱码的经验,我给大家总结了以下几类乱码的场景,绝壁能帮你解决 IDEA 各种乱码问题. 常见乱码场景及解决方案 1.项目源代码中文乱码 Settings > Editor > File Encodings > Global Encodings & Project Encodings 设置为:UTF-8. 上面红色区域都统一设置一下. 2.Main方法运行,控制台

  • 关于正则表达式基本语法的应用详解(必看篇)

    1.正则表达式基本语法 两个特殊的符号'^'和'$'.他们的作用是分别指出一个字符串的开始和结束.例子如下: "^The":表示所有以"The"开始的字符串("There","The cat"等): "of despair$":表示所以以"of despair"结尾的字符串: "^abc$":表示开始和结尾都是"abc"的字符串--呵呵,只有&qu

  • 老生常谈Java字符串进阶(必看篇)

    前言 最常用的对字符串操作的类有三个,分别是String,StringBuilder,StringBuffer,下面将会详细的说说这三个类...... String String类代表字符串,这个是最基本的对字符串的类,这个也是使用比较多的类,这里就不再详细介绍了 构造 new String(String str) new String(StringBuilder str) new String(StringBuffer str) new String(byte[] bys,String cha

  • JavaScript自学笔记(必看篇)

    0-判断变量.参数是否初始化 if(x){} //变量被初始化了或者变量不为空或者变量不为零 1-声明函数不需要声明返回值.参数类型,句尾甚至都不需要';' function sum(i1,i2){return i1+i2} 2-直接声明匿名函数立即使用 var f=function(i1,i2){return i1+i2;}; alert(f(1,2));//普通匿名函数 alert(function(i1,i2){return i1+i2;}(3,4));//直接声明,立即使用 3-js中没

  • mysql下mysqladmin日常管理命令总结(必看篇)

    mysqladmin 工具的使用格式: mysqladmin [option] command [command option] command ...... 参数选项: -c number 自动运行次数统计,必须和 -i 一起使用 -i number 间隔多长时间重复执行 0)每个两秒查看一次服务器的状态,总共重复5次. [root@test-huanqiu ~]# mysqladmin -uroot -p -i 2 -c 5 status 1)查看服务器的状况:status [root@te

随机推荐