-
Spring的设计理念和整体架构
1.1 spring的各个子项目
1.1.1 spring framwork 核心, IoC容器设计,控制反转,AOP ,MVC ,JDBC ,事务处理
1.1.2 spring security 认证和安全工具
1.1.3 spring security OAuth 提供一个开放的协议的实现,进行简单而标准的安全调用
1.1.4 spring Intergration 与企业级应用系统的集成
1.1.5 spring social spring框架的扩展
1.1.6 spring data 提供使用非关系型数据框的能力
1.2 spring的设计目标
1.3 spring的整体架构
1.3.1 Spring IoC
1.3.2 Spring AOP
1.3.3 Spring MVC
1.3.4 Spring JDBC/Spring ORM
1.3.5 Spring 事物处理
1.3.6 Spring远端调用
1.3.7 Spring应用
1.4 spring的应该场景 -
Spring Framwork的核心: IoC容器的实现
依赖反转: 反转了什么?
依赖对象的获得被反转,业务逻辑的实现往往需要2个及以上的对象合作完成,那么在a中必然需要对b引用的依赖,这样会造成较强的耦合性.依赖注入是将依赖对象的获取反转,控制权统一交给IoC容器去管理,以实现解耦的目的.
2.1 IoC容器的设计与实现: BeanFactory 和 ApplicationContext
BeanFactory 提供了容器最基本的功能和规范
ApplicationContext 是容器的高级形态,通过一系列的接口实现,添加不同的额外功能
2.1.1 IoC容器的主要接口设计
线路一: BeanFactory >> HierarchicalBeanFactory >> ConfigurableBeanFactory
线路二: BeanFactory >> ApplicationContext >> WebApplicationContext
>> ConfigurableApplicationContext
2.1.2 BeanFactory 中的方法
Object getBean(String name); 根据名字获取bean;
boolean containsBean(String name); 让用户判断是否有指定名字的Bean
boolean isSingleton(String name); 是否是单例模式
boolean isPrototype(String name); 是否是原始模式,每次对bean的请求都会创建一个新的bean实例
boolean isTypeMatch(String name, ResolvableType typeToMatch); 指定名字的bean的Class类型是否是传入的Class类
Class<?> getType(String name);根据类型获取bean
String[] getAliases(String name); 获取bean的所有别名
2.1.3 编程式使用IoC容器
1.获取特定位置的数据资源
2.创建BeanFactory
3.创建一个BeanDifination的读取器,通过回调配置给BeanFactory;
4.解析资源,转换载入BeanDefination2.2 IoC容器的初始化过程
2.2.1 BeanDefinition的Resource定位
2.3.2 BeanDefinition的载入与解析
2.3.3 BeanDifinition在IoC容器中的注册2.3 IoC的依赖注入
-
Spring AOP的实现
3.1 Spring AOP概述
3.1.1 AOP概念回顾
3.1.2 通知
定义代码在什么情况下织入
3.1.3 切点
需要增强的方法的集合
3.1.4 通知器
使通知和切点结合,定义应该使用那个通知并在那个关注点使用它3.2 Spring AOP的设计与实现
3.3 建立AOPProxy代理对象
3.3.1 设计原理
3.3.2 配置ProxyFactoryBean
3.3.3 ProxyFactoryBean生成AopProxy代理对象
3.3.4 JDK生成AopProxy代理对象
3.3.5 CGLB生成AopProxy代理对象3.4 Spring AOP拦截器调用的实现
3.5 Spring AOP的高级特性
BeanDefinition的元信息
1. Class Bean 全类名,必须是具体类,不能用抽象类或接口
2. Name Bean 的名称或者ID
3. Scope Bean 的作用域