SpringIOC与AOP的总结
-
- 一. IoC的概念
-
- 1.1 ApplicationContext
-
- 1.1.1 ApplicationContext 接口有两个常用的实现类:
-
- 1.1.1.1 ClassPathXmlApplicationContext——常用
- 1.1.1.2 FileSystemXmlApplicationContext
- 1.2 Spring容器创建对象的方式
-
- 1.2.1 使用默认的构造方法
- 1.2.2 使用带参数的构造方法
- 1.2.3 使用工厂类
- 1.2.4 创建新的配置文件createType.xml
- 1.2.5 测试类
- 1.3 基于XML的DI
- 1.3.1 注入分类
-
- 1.3.1.1 通过set方法
- 1.3.1.2 通过构造方法
- 1.3.1.3 自动注入
- 二. Spring核心之AOP
-
- 2.1 什么是AOP
- 2.2 AOP的实现机制-动态代理
-
-
- 2.2.1 什么是代理模式
-
- 2.3 静态代理
-
- 2.3.1 原有方式:核心业务和服务方法都编写在一起
- 2.3.2 基于类的静态代理
- 2.3.3 基于接口的静态代理
- 2.4 动态代理
-
- 2.4.1 基于JDK的动态代理
- 2.4.2 基于CGLIB的动态代理
-
- 2.4.2.1 直接编写测试类
- 三. SpringAOP
-
- 3.1 Spring AOP相关概念
一. IoC的概念
IoC–Inversion of Control,即”控制反转”,不是什么技术,而是一种设计思想。
Ioc是指在程序开发过程中,实例的创建不再由调用者管理,而是由Spring容器管理。Spring容器会负责控制程序之间的关系,而不是由程序代码直接控制,因此,控制权由程序代码转移到了Spring容器中,控制权发生了反转,这就是IoC的思想。
获取Spring容器: Spring 提供了两种IoC容器,分别为BeanFactory和ApplicationContext
-
BeanFactory
BeanFactory 是基础类型的 IoC 容器,是一个管理 Bean 的工厂,它主要负责初始化各种 Bean,并调用它们的生命周期方法。 BeanFactory 接口有多个实现类,最常见的是org.Springframework.beans.factory.xml.XmlBeanFactory,它是根据 XML 配置文件中的定义装配
Bean 的。
BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource(Spring配置文件的名称));
1.1 ApplicationContext
ApplicationContext 是 BeanFactory 的子接口,也被称为应用上下文。它不仅提供了 BeanFactory 的所有功能,还添加了对 i18n(国际化)、资源访问、事件传播等方面的良好支持。
1.1.1 ApplicationContext 接口有两个常用的实现类:
1.1.1.1 ClassPathXmlApplicationContext——常用
该类从类路径 ClassPath 中寻找指定的 XML 配置文件,找到并装载完成 ApplicationContext 的实例化工作
ApplicationContext applicationContext=new ClassPathXmlApplicationContext(Spring配置文件的名称);
1.1.1.2 FileSystemXmlApplicationContext
ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);
它与 ClassPathXmlApplicationContext 的区别是:在读取 Spring 的配置文件时,
FileSystemXmlApplicationContext 不再从类路径中读取配置文件,而是通过参数指定配置文件的位
置,它可以获取类路径之外的资源,如“D:application.xml”。
1.2 Spring容器创建对象的方式
1.2.1 使用默认的构造方法
1.2.2 使用带参数的构造方法
1.2.3 使用工厂类
1.2.4 创建新的配置文件createType.xml
1.2.5 测试类
1.3 基于XML的DI
由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为
了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过
简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资
源来自何处,由谁实现。
IoC 是一个概念,是一种思想,其实现方式多种多样。依赖注入就是其中用的比较多的一种方式。
Ioc和DI是同一个概念的不同角度描述。 IoC是一种思想,概念,DI是实现它的手段。Spring框架使用依赖注入实现IoC。
Spring 容器是一个超级大工厂,负责创建、管理所有的 Java 对象,这些 Java 对象被称为 Bean。
Spring 容器管理着容器中 Bean 之间的依赖关系,Spring 使用“依赖注入”的方式来管理 Bean 之间的依
赖关系。使用 IoC 实现对象之间的解耦和。
1.3.1 注入分类
bean 实例在调用无参构造器创建对象后,就要对 bean 对象的属性进行初始化。初始化是由容器自动完
成的,称为注入。
1.3.1.1 通过set方法
set 注入也叫设值注入是指,通过 setter 方法传入被调用者的实例。这种注入方式简单、直观,因而在
Spring 的依赖注入中大量使用。
1.3.1.2 通过构造方法
构造注入是指,在构造调用者实例的同时,完成被调用者的实例化。使用构造器设置依赖关系。
1.3.1.3 自动注入
对于引用类型属性的注入,也可不在配置文件中显示的注入。可以通过为标签设置 autowire 属性值,为引用类型属性进行隐式自动注入(默认是不自动注入引用类型属 性)。根据自动注入判断标准的不同,可以分为两种:
byName:根据名称自动注入
byType: 根据类型自动注入
1、 byName
当配置文件中被调用者 bean 的 id 值与代码中调用者 bean 类的属性名相同时,可使用byName 方式,
让容器自动将被调用者 bean 注入给调用者 bean。容器是通过调用者的 bean类的属性名与配置文件的
被调用者 bean 的 id 进行比较而实现自动注入的。
2、 byType
使用 byType 方式自动注入,要求:配置文件中被调用者 bean 的 class 属性指定的类,要与代码中调用
者 bean 类的某引用类型属性类型同源。即要么相同,要么有 is-a 关系(子类,或是实现类)。但这样
的同源的被调用 bean 只能有一个。多于一个,容器就不知该匹配哪一个了。
二. Spring核心之AOP
2.1 什么是AOP
AOP为Aspect Oriented Programming的缩写,意思为面向切面编程,是通过预编译方式和运行期动态
代理实现程序功能的统一维护的一种技术。
AOP的作用:不修改源码的情况下,程序运行期间对方法进行功能增强
好处:
1、减少代码的重复,提高开发效率,便于维护。
2、专注核心业务的开发。
核心业务和服务性代码混合在一起
开发中:各自做自己擅长的事情,运行的时候将服务性代码织入到核心业务中。
通过spring工厂自动实现将服务性代码以切面的方式加入到核心业务代码中。
2.2 AOP的实现机制-
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!