Day03:AOP

2017-07-27  本文已影响0人  宇宙超人喵学长

1、横切

2、Spring的AOP

2.1 AOP支持类型

前三中,构建在动态代理的基础上,只支持方法拦截

2.1.1 经典Spring AOP

笨重复杂,直接使用ProxyFactoryBean

2.1.2 POJO切面

2.2 配置类级别的自动代理

2.2.1在JavaConfig中,注解

@Configuration @EnableAspectJAutoProxy @ComponentScan

2.2.2 xml中配置

2.3 环绕通知

}`

2.4 带参数的通知

`@Poingcut("execution(** soundsystem.CompactDisc.playTrack(int)) && args(trackNumber) ")
public void trackPlayed(int trackNumber){}

@Before("trackPlayed(trackNumber)")
public void countTrack(int trackNumber) {
//修改trackNumber的值
}`
//表达式分解:
*:返回任意类型
soundsystem.CompactDise:方法所属的类型
playTrack(int)) :方法及接受的参数类型
args(trackNumber) :指定参数

3、注解加新功能

3.1 添加新的方法(接口)

给现有的bean添加接口,通过代理暴露新接口,该方法被调用时,代理将此调用委托给实现了新接口的其他对象
@Aspect public class EncoreableIntroducer { @DeclareParents(value="concert.Performance+", defaultImpl=DefaultEncorealbe.class) public static Encoreable encoreable; }
//解释说明
value:指定要引入该接口的bean,+代表它的所有子类型,不是它本身
defaultImpl:引入功能的实现类
@DeclareParents注解:要引入的接口

上一篇 下一篇

猜你喜欢

热点阅读