Spring实战- Aop 使用注解引入新功能(六)
来源:互联网 发布:手机数据流量改dns 编辑:程序博客网 时间:2024/06/05 17:16
首先,我们声明一个接口:Performer,演员具有表演的能力
package com;import com.exception.PerformanceExcetion;public interface Performer {void perform() throws PerformanceExcetion;}然后,让一个杂技师继承演员的接口,并实现:
package com.entity;import com.Performer;import com.exception.PerformanceExcetion;public class Juggler implements Performer{private int beanBags=3;public Juggler(){}public Juggler (int beanBags){this.beanBags=beanBags;}@Overridepublic void perform() throws PerformanceExcetion {System.out.println("Juggler(杂技师) "+ beanBags +" beanBags ");}}
然后我们在声明一个接口:竞争者,有一个奖励现金的方法:
package com.entity;public interface Contestant {public void receiveAward();}我们写一个他的实现类,每一个竞争者都给予现金奖励:
package com.entity;public class ContestantImpl implements Contestant{public void receiveAward() {System.out.println("给予现金五千万");}}
package com.entity;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.DeclareParents;@Aspectpublic class ContestantIntroducer {//value:被引入指定接口的Bean类型,defaultImpl:提供了所引入接口的实现//@DeclareParents:指定了将被引入的接口@DeclareParents(value="com.entity.Juggler+",defaultImpl=ContestantImpl.class)public static Contestant contestant;}
我们可以看到,vaule指定了要被引入的接口的实现类,defaultImpl:引入的接口实现类
在配置文件中声明这个两个Bean:
<aop:aspectj-autoproxy/><bean id="juggler" class="com.entity.Juggler"></bean><bean id="ContestantIntroducer" class="com.entity.ContestantIntroducer"></bean>
<bean id="ContestantImpl" class="com.entity.ContestantImpl"></bean>
测试类:
package com;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.entity.Contestant;import com.entity.ContestantImpl;import com.entity.ContestantIntroducer;import com.entity.Juggler;import com.entity.Thinker;public class springTest {public static void main(String[] args) {ApplicationContext cxt=new ClassPathXmlApplicationContext( "classpath:/spring/spring.xml");Performer performer =(Performer)cxt.getBean("juggler");performer.perform();Contestant contestant =(Contestant)cxt.getBean("juggler");contestant.receiveAward();}}
我们可以看到,获取同一个Bean杂技师,转换成不同的两个Bean,具有两个方法,那么此时杂技师就既是一名表演者,又是一名竞争者
输出:
Juggler(杂技师) 3 beanBags
给予现金五千万
0 0
- Spring实战- Aop 使用注解引入新功能(六)
- Spring AOP 使用注解为API引入新功能
- SpringAOP使用注解引入新功能
- spring(六)---aspectj aop编程(注解配置)
- spring实战-基于注解的面向切面编程(AOP)
- AOP之Spring使用注解方式实现AOP(入门)
- spring AOP(注解)
- 深入理解Spring AOP实战(基于注解)
- 使用注解实现Spring aop
- 使用注解配置spring aop
- spring使用注解实现AOP
- 使用注解配置Spring AOP
- Spring采用注解使用AOP
- spring-AOP通过注解@DeclareParents引入新的方法
- 深入理解Spring Redis的使用 (六)、用Spring Aop 实现注解Dao层的自动Spring Redis缓存
- Spring AOP实现(注解)
- 使用注解方式实现Spring中AOP笔记(菜鸟)
- Spring AOP--引入增强
- Retrofit2的简单用法(一)
- mysql 的FOUND_ROWS()
- 判断字符串是否仅为数字/首字符是否为字母/汉字
- 面向对象的七大原则
- mfc添加可停靠隐藏等功能的侧边栏
- Spring实战- Aop 使用注解引入新功能(六)
- Java中的Runnable、Callable、Future、FutureTask的区别
- JZOJ4848 永恒的契约
- 静态库制作使用示例
- JavaScript Math对象
- 强制将 SSH 的host key type由 ECDSA替换为RSA
- iOS 开发 XMPP即时通讯项目开发(仿微信)-详解之xmpp环境搭建(数据库/客户端/服务器)
- 1212
- Java 成员变量 局部变量 静态变量的比较