Spring-1

 

MVC框架

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。

 

MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。

MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。

 

框架不同于设计模式

1、框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。

2、框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。

常用框架模式:MVC、MTV、MVP、CBD、ORM等

常用框架:SSH、SSL、Spring

设计模式:工程模式、适配器模式、策略模式

 

Spring

Spring实际上是Expert One-on-One J2EE Design and Development 一书中所阐述的设计思想的具体实现。在One-on-One 一书中,Rod Johnson倡导J2EE实用主义的设计思想,并随书提供了一个初步的开发框架实现(interface21 开发包)。而Spring 正是这一思想的更全面和具体的体现。Rod Johnson 在interface21 开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的开发框架。所以它的成功来源于理念而不是技术本身。

Spring是一个开源代码的设计层面框架,解决的是业务逻辑层和其他各层的松耦合问题,将面向接口的编程思想贯穿整个系统应用。是一个分层的JavaSE/EE full-stack(一站式)轻量级开源框架。

Spring 是一个轻量级的 DI / IoC 和 AOP 容器的开源框架,来源于 Rod Johnson 在其著作《Expert one on one J2EE design and development》中阐述的部分理念和原型衍生而来。

Spring 提倡以“最少侵入”的方式来管理应用中的代码,这意味着我们可以随时安装或者卸载 Spring:

适用范围:任何 Java 应用

Spring 的根本使命:简化 Java 开发

常用术语

框架:是能完成一定功能的半成品。

框架能帮我们完成的是:项目的整体框架、一些基础功能、规定了类和对象如何创建,如何协作等。

非侵入式设计

从框架角度理解为:无需继承框架提供的任何类。便于更换框架,

轻量级和重量级

轻量级是相对于重量级而言的,轻量级一般就是非入侵性的、所依赖的东西非常少、资源占用非常少、部署简单等,就是比较容易使用。

重量级正好相反。

JavaBean

符合JavaBean规范的Java类。

注意:bean的各种名称。虽然Spring用bean或者JavaBean来表示应用组件,但并不意味着Spring组件必须遵循JavaBean规范,一个Spring组件可以是任意形式的POJO。

POJO:Plain Old Java Objects,简单老式Java对象

它可以包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不继承或不实现任何其他Java框架的类或接口。

容器

装对象的对象,还要管理对象的声明周期。

Spring优势

低侵入/低耦合(降低组件间的耦合度,实现软件各层间的解耦)

声明式事物管理(基于切面和惯例)

方便集成其他框架(如MyBatis、Hibernate)

降低Java开发难度

Spring框架中包括了J2EE三层的每一层的解决方案(一站式)

Spring用途

根据配置文件创建及组装对象间的依赖关系

面向切面编程能无耦合的实现日志记录,性能统计,安全控制

能非常简单的管理数据库事物

与第三方数据访问框架(如Hibernate、JPA)无缝集成,本身也提供了一套JDBC访问模板来方便数据库访问

与第三方Web(如Struts1/2)框架无缝集成,提供了一套Spring MVC框架,方便web层搭建

方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)

Spring框架结构

Data Access/Integration(整合)层:包含JABC、ORM、OXM、JMS和Transactions模块。

Web层包含:Web、Web-Servlet、WebSocket、Web-Portlet、Struts模块。

AOP模块:提供一个符合AOP联盟标准的面向切面编程的实现。

Core Container(核心容器):包含Beans、Core、Context和SpEL模块。

Test模块:支持使用JUnit和TestNG对Spring组件进行测试。

Spring IoC和DI简介

IoC:Inverse of Control(控制反转),是一种通过描述并通过第三方去产生或获取特定对象的方式。描述在Java中可以是XML或者注解。第三方即为Spring。

读作“反转控制”更好理解,是一种设计思想,将原本在程序中手动创建对象的控制权,交由Spring框架来管理

正控:若要使用某个对象,需要自己去负责对象的创建

反控:若要使用某个对象,只需要从Spring容器中获取需要使用的对象,不关心对象的创建过程,把创建对象的控制权反转给了Spring框架

好莱坞法则:Don’t call me,I’ll call you

 

优点:

降低对象间的耦合

使用者不需要理解一个类的具体实现,只需知道如何使用即可。

 

比较:

传统的方式:通过new 关键字主动创建一个对象。

IOC方式:对象的生命周期由Spring来管理,直接从Spring那里去获取一个对象。不用主动创建对象(主动创建责任归于开发者),在这种被动模式下,责任归于IoC容器。基于这种被动模式,就像控制权从本来在自己手里,反转给了Spring。

Spring IoC容器

Spring提供IoC容器来管理和容纳用户所开发的各种各样的Bean,并且用户可以从中获取到各种发布在Spring IoC容器里的Bean,并且通过描述可以得到它。

IoC容器:具有IoC功能的容器?

Spring IoC容器设计

主要基于两个接口:BeanFactory和ApplicationContext。

其中ApplicationContext是BeanFactory的子接口之一,换句话说:BeanFactory是Spring IoC容器所定义的最底层接口,而ApplicationContext是其最高级接口之一,并对BeanFactory功能做了许多的扩展。所以在绝大部分的工作场景下,都会使用ApplicationContext作为Spring IoC容器。

特征

轻量:从大小和开销两方面而言spring都是轻量的。

控制反转:通过一种称作控制反转(IOC)的技术促进了低耦合。

面向切面:AOP(Aspect Oriented Programming)。提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统服务和事物管理进行内聚性的开发。

容器:包含并管理应用对象的配置和声明周期,在这个意义上它是一种容器。

框架:可以将简单的组件配置、组合成为复杂的应用。

 

 

 

 

spring io platform

spring官网网址是:https://spring.io/,第一个spring project就是spring io platform,spring io platform其实就是一个平台。Spring IO Platform就是将核心Spring API集成到一个富有凝聚力的平台中,适用于现代应用程序,它提供了Spring中众多项目的版本依赖关系(参考)。这些都是经过严格测试通过的,并且可以完全协同工作。

Spring IO平台主要被用于一个可以实现依赖管理的系统。它与Maven和Gradle都能很好的兼容。

 

J2EE

J2EE全称为Java2 Platform Enterprise Edition。J2EE平台本质上是一个分布式的服务器应用程序设计环境——一个Java环境,它提供了:

·宿主应用的一个运行基础框架环境。

·一套用来创建应用的Java扩展API。”(引自《J2EE服务器端高级编程》)

J2EE 是使用 Java 技术开发企业级应用的工业标准,它是 Java 技术不断适应和促进企业级应用过程中的产物。 适用于企业级应用的 J2EE,提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的 开发、管理和部署。主要用来建设大型的分布式企业级应用程序。

J2EE 是一个标准,而不是一个现成的产品。

大体上J2EE可以分成3个主要应用:Servlet/JSP(Java server Page),EJB,XML/Web Service 和一些支撑技术例如JDBC和JNDI。

 

JavaBean

JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁。JSP搭配JavaBean来使用,有以下的优点:

1.可将HTML和Java代码分离,这主要是为了日后维护的方便。如果把所有的程序代码(HTML和Java)写到JSP页面中,会使整个程序代码又多又复杂,造成日后维护上的困难。

2.可利用JavaBean的优点。将日常用到的程序写成JavaBean组件,当在JSP要使用时,只要调用JavaBean组件来执行用户所要的功能,不用再重复写相同的程序,这样以来也可以节省开发所需的时间。

JavaBean开发:

1.JavaBean本身就是一个类,属于Java的面向对象编程。

2.在JSP中如果要应用JSP提供的Javabean的标签来操作简单类的话,则此类必须满足如下的开发要求:

(1)所有的类必须放在一个包中,在WEB中没有包的是不存在的;

(2)所有的类必须声明为public class,这样才能够被外部所访问;

(3)类中所有的属性都必须封装,即:使用private声明;

(4)封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法;

(5)一个JavaBean中至少存在一个无参构造方法,此为JSP中的标签所使用。

 

posted @ 2018-11-07 08:55  huinina  阅读(141)  评论(0)    收藏  举报