配置listener主要是为了捕获项目发布 | 服务器启动的契机 ,为了解析xml , 创建工厂。 这个listener是spring官方提供的,里面已经具备了解析xml 和 创建工厂的代码。
正如上面所说的,listener捕获到了项目发布的契机,进而去创建工厂。spring 4.0 aop但是创建工厂需要解析xml 。 spring的这个器里面,默认会到WEB-INF/applicationContext.xml. 如果不想放置到这个位置,可以通过一个context-param来告诉spring,我们的配置文件在哪里。 classpath 表示这个文件是位于类路径底下。 classes目录
导入jar包
spring-aop-xxx.jar
导入约束
在xml里面打开注解扫描开关
在托管的类上打注解
问工厂要实例对象
使用注解来完成依赖注入。 一般注解注入,它针对的点是对象的注入。 spring针对对象的注入,提供了两个注解 @Resource 和 @Autowired
常用的注解就两个 @Resource & @Autowired
@Resource(name="ud") 根据给定的标记找到对应的类,创建对象,注入进来。
@Autowired 自动装配,会找到对应的实现类创建对象,注入进来。但是如果存在多个实现,那么会抛出异常
在项目里面,使用xml和注解来完成Spring 的配置。spring 4.0 aop
xml : 负责完成IOC (对象的创建)
注解 : 负责完成DI (属性的注入)
xml托管类
注解完成注入:
导入jar包
spring-test-xxx.jar
托管业务逻辑类,不管是用xml还是注解都可以
在测试类上打上注解 ,给测试类的成员变量注入值
AOP(Aspect Oriented Programming,面向切面编程),可以说是OOP(Object Oriented Programing,面向对象编程)的补充和完善。OOP更多的是侧重于上下间的关系(继承关系 、实现关系) , OOP很难体现左右间的关系。 核心: 在不改动源码的前提下,对原有功能能完成扩展 | 升级
aop不改源码,但是能够扩展和升级代码。 能够做成这个事情,只有三种解决手法 : 装饰者模式 , 静态代理 、 动态代理 。 AOP 选择的是动态代理 , 装饰者模式和静态代理,要求我们必须写出来装饰类和代理类。 动态代理的实现机制,有两种: 基于JDK的动态搭理、基于Cglib的动态代理
基于JDK的动态代理
如果哪一个真实类有实现接口,那么就采用这种方式,创建出来接口的另一个实现类作为代理类
基于Cglib动态代理
如果真实类是一个普通类,没有实现接口,那么就采用这种方式, 创建出来真实类的子类作为代理类。
Spring的AOP其实已经准备好了创建代理的代码。只是不知道的是要创建谁的代码。哪些方法需要被增强。我们需要通过配置的形式告诉spring。
定义业务逻辑类
定义增强类
导入jar包
a. 导入 spring必须的jar
?
b. 额外导入:
?
spring-aop-xx.jar,spring-aspect-xx.jar
?
面向切面过程中,Spring AOP是遵循了AOP联盟的规范实现的,所以需要有AOP联盟的接口包
aopalliance-x.x.jar,接口包依赖aspectjweaver-x.x.x.jar
xml中配置
要导入aop的约束
让spring托管 业务逻辑类 和 增强类
配置AOP
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-85890-1.html
xihuan