简介
广义上讲,spring应该是java框架里面的一个生态链,它包括了一系列官方推荐的spring相关框架
而单独把spring拿出来讲就是以核心为控制反转(IoC)和面向切面(AOP)的编程思想构建的框架,且这个spring的思想不一定是用在web开发上的,即使是javaSE也可以使用。(面向接口的思想)
优点
方便解耦,简化开发,高内聚,低耦合
Spring 就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给 Spring 管理
Spring 工厂是用于生成 bean
spring体系(七大功能模块)
Spring Core:(核心容器)
主要组件是BeanFactory,它是工厂模式的实现,使用的是IOC模式
Spring Context:(上下文)
它是一个配置文件
Spring AOP:
面向切面编程
Spring DAO:
Spring ORM:
spring框架插入了若干个ORM框架,从而提供了 ORM 的对象关系工具
Spring Web:
Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了
上下文
Spring MVC:
MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现
Spring核心之IOC
org.springframework.beans包,看这个包就知道这个ioc主要是为创建bean而设计的,更为特殊的是,这个创建是交给了程序,而不是用户自己创建(默认为单态(singleton),可设置为原型(prototype)),当然也可以设置为request,session。
Spring核心之AOP
面向切面的编程技术,已经实现的代码我们不想改,而在其上对功能进行扩展,用到的是代理模式(Proxy)
被代理类在有实现接口的时候一般用jdk代理,而在被代理类没有实现任何接口时可以使用cglib代理,cglib是通过导包实现的,并且cglib生成的代理类是被代理类的子类
AOP面向切面由正是由动态代理实现的
这两种代理模式都是动态代理,没什么想的,只有动态代理才能完成我们的aop
事务
aop的用途之一就是事务管理,spring的事务:
1 编程式事务:提交回滚代码由程序员自己编写
2 声明式事务:spring可以自动帮助程序员开启、提交,不用手写(提供了schema-base和aspectj两种)
schema-base:每个通知都需要实现接口或类
aspectj:每个通知不需要实现接口或类
常用概念
1 切点 需要添加额外功能的方法
2 前置通知 在切点之前执行的功能. before advice
3 后置通知 在切点之后执行的功能,after advice
4 异常通知 如果切点执行过程中出现异常,会触发异常通知.throws advice
5 切面 所有功能总称叫做切面.
6 织入 把切面嵌入到原有功能的过程叫做织入