Spring(1)介绍
一:Spring的优点
1.Spring是一个开源的免费的框架(是bean的容器),用来管理bean的生命周期,处理bean与bean之间的关系。
2.Spring是一个轻量级的,非入侵式的框架。
3.控制反转(ioc)我们将bean都注入到spring容器中,spring来管理bean的生命周期,处理bean与bean的关系。面向切面编程(aop);
4.支持事务的处理,对框架整合的支持。
总结一句话:Spring就是一个轻量级的控制反转(ioc)和面向切面编程(aop)的框架。
二:Spring组成及扩展(spring7大模块)
支撑所有基础的是Spring Core
ORM对象关系映射,我们的mybatis(iBats)等等
DAO对dao层的支持
Spring Web MVC 对我们的jsp,servlet的支持。
Spring Context 对UI的支持,还有邮件验证的支持。
1.Spring Core
核心模块SpringCore模块是Spring的核心容器,它实现了IOC模式,提供了Spring框架的基础功能。此模块中包含的BeanFactory类是Spring的核心类,负责JavaBean的配置与管理。它采用Factory模式实现了IOC即依赖注入。谈到JavaBean,它是一种Java类,它遵从一定的设计模式,使它们易于和其他开发工具和组件一起使用。定义JavaBean是一种JAVA语言写成的可重用组件。要编写JavaBean,类必须是具体类和公共类,并且具有无参数的构造器。
2.Context模块
SpringContext模块继承BeanFactory(或者说Spring核心)类,并且添加了事件处理、国际化、资源装载、透明装载、以及数据校验等功能。它还提供了框架式的Bean的访问方式和很多企业级的功能,如JNDI访问、支持EJB、远程调用、集成模板框架、Email和定时任务调度等。
这里说一下EJB:
把EJB 这个概念变成大白话
变成大白话就是,"把你编写的软件中那些需要执行制定的任务的类,不放到客户端软件上了,而是给他打成包放到一个服务器上了"。4.2 EJB 的实现技术
EJB 是运行在独立服务器上的组件,客户端是通过网络对EJB 对象进行调用的。在Java中,能够实现远程对象调用的技术是RMI,而EJB 技术基础正是RMI。通过RMI 技术,J2EE将EJB 组件创建为远程对象,客户端就可以通过网络调用EJB 对象了。
总结:
a.EJB实现原理: 就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信。
b.RMI实现原理 :就是通过Java对象可序列化机制实现分布计算。
c.服务器集群: 就是通过RMI的通信,连接不同功能模块的服务器,以实现一个完整的功能。
3.AOP模块
AOP是我们定义的类上写上@Aspect,那么这个类就是一个切面;在 Spring AOP 中,使用 @Aspect 注解标识的类就是一个切面,然后在切面中定义切点(pointcut)和 增强(advice):
前置增强,@Before(),在目标方法执行之前执行 //这里的add就是一个切点;这里的
https://my.oschina.net/mengyuankan/blog/2993187
@Component @Aspect public class UserAspectj { // 在方法执行之前执行 @Before("execution(* main.tsmyk.mybeans.inf.IUserService.add(..))") public void before_1(){ System.out.println("log: 在 add 方法之前执行...."); } }
上述的方法 before_1() 是对接口的 add() 方法进行 前置增强,即在 add() 方法执行之前执行,
Spring集成了所有AOP功能。通过事务管理可以使任意Spring管理的对象AOP化。Spring提供了用标准Java语言编写的AOP框架,它的大部分内容都是基于AOP联盟的API开发的。它使应用程序抛开EJB的复杂性,但拥有传统EJB的关键功能。
4.Dao模块
提供了一个简单有效的JDBC应用
5.ORM模块
spring除了有自己的JDBC以外还提供了对其他ORM框架的支持,如
Hibernate,Mybatis都可以和spring进行良好的结合
6.Web模块
Spring的web模块,提供WebApplication上下文信息,实现文件上传、数据绑定以及其它Web框架的集成;
7.Mvc模块
SpringMVC模块建立在Spring核心功能之上,这使它能拥有Spring框架的所有特性,能够适应多种多视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑的清晰分离。说说MVC在JSP的作用,这里引入了“控制器”这个概念,控制器一般由Servlet来担任,客户端的请求不再直接送给一个处理业务逻辑的JSP页面,而是送给这个控制器,再由控制器根据具体的请求调用不同的事务逻辑,并将处理结果返回到合适的页面。因此,这个Servlet控制器为应用程序提供了一个进行前-后端处理的中枢。一方面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点;另一方面也提供了将业务逻辑从JSP文件剥离的可能。业务逻辑从JSP页面分离后,JSP文件蜕变成一个单纯完成显示任务的东西,这就是常说的View。而独立出来的事务逻辑变成人们常说的Model,再加上控制器Control本身,就构成了MVC模式。实践证明,MVC模式为大型程序的开发及维护提供了巨大的便利。
三:扩展
SpringBoot:构建一切;SpringCloud:协调一切;SpringCloudDataFlow:连接一切;
SpringBoot: 一个快速开发的脚手架,基于SpringBoot可以快速的开发单个微服务,约定大于配置
SpringCloud:是基于SpringBoot实现的
因为现在大多数都使用SpringBoot进行快速开发,学习SpringBoot的前提,需要完全掌握Spring与SpringMVC ,承上启下。
弊端:Spring违背了原来的理念,配置繁琐。