11、AOP之引入
来源:互联网 发布:深信服上网行为 js脚本 编辑:程序博客网 时间:2024/05/29 07:55
SpringAOP的引入通过@DeclareParents
实现,其目标是对于一个已有的类引入新的接口。
//业务接口类package com.codestd.springstudy.aop.introductions;public interface Animal { public void sleep(); public void shout();}//-----------------------------------------//实现类package com.codestd.springstudy.aop.introductions;import org.springframework.stereotype.Component;@Componentpublic class Cock implements Animal { @Override public void sleep() { System.out.println("Cock sleep"); } @Override public void shout() { System.out.println("Cock shout"); }}//-----------------------------------------//要引入的接口package com.codestd.springstudy.aop.introductions;public interface Flyable { public void fly();}//-----------------------------------------//引入接口的实现类package com.codestd.springstudy.aop.introductions;public class DefaultFlyable implements Flyable { @Override public void fly() { System.out.println("fly"); }}//-----------------------------------------//声明引入package com.codestd.springstudy.aop.introductions;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.DeclareParents;import org.springframework.stereotype.Component;@Component@Aspectpublic class AnimalIntroduction { @DeclareParents(value="com.codestd.springstudy.aop.introductions.Animal+", defaultImpl=DefaultFlyable.class) public static Flyable flyable;}
现在就可以认为Animal的实现类同时也实现了Flyable接口。然后可以直接从Spring容器中获取Bean,然后调用接口内的方法。接口的方法是defaultImpl
中指定的实现类中方法的实现。
//-----------------------------------------//测试,现在可以直接通过Spring获取到实现package com.codestd.springstudy.aop.introductions;import javax.annotation.Resource;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:aop/applicationContext.xml"})public class AnimalTest { @Resource(name="cock") private Flyable flyable; @Test public void test() { this.flyable.fly(); }}
0 0
- 11、AOP之引入
- Spring AOP--引入增强
- Spring--AOP-引入
- spring-AOP引入
- spring06 aop 引入
- 在nanowar中引入AOP
- 引入AOP--代理的比较
- 基于配置的ORMapping框架浅析之4(面向方面的AOP切面思想引入)
- Spring AOP之高级应用--在已有的bean中引入行为
- AOP编程之后置通知、环绕通知、异常通知、引入通知
- AOP之AOP基础知识
- C++11之AOP实现
- 【Spring实战】—— 11 通过AOP为特定的类引入新的功能
- 【Spring实战】—— 11 通过AOP为特定的类引入新的功能
- Spring AOP 的引入(三 基于annotation)
- Spring AOP之aop:config
- java之单类引入&&包引入
- javascript之JSON引入
- 10、返回通知、异常通知
- 第10课:Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考
- java.lang.Integer的面试陷阱
- 实验:C++实验6-项目1
- Spring Aop源码分析
- 11、AOP之引入
- 【LSH源码分析】p稳定分布LSH算法
- Linux学习之用户自定义变量
- 12、基于XML方式的AOP
- java 定时任务串行并行
- 用python写一个简单的推荐系统
- strcpy strncpy memcpy等系列库函数剖析与实现
- leetcode 4. Median of Two Sorted Arrays
- SVN小知识