课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > 经典的基于代理的AOP实现方式
  • 经典的基于代理的AOP实现方式

    发布:昆明Java培训      来源:达内新闻      时间:2016-10-21

  • 昆明Java培训的老师今天给大家讲经典的基于代理的AOP实现方式。

    经典的基于代理的AOP

    1.创建通知:定义一个接口

    public interface Sleepable{

    void sleep();

    }

    然后写一个Human类,他实现了这个接口

    public Human implements Sleepable{

    public void sleep(){

    System.out.println("睡觉中...!");

    }

    }

    2.编写一个SleepHelper类,它里面包含了睡觉的辅助工作,用AOP术语来说它就应该是通知

    public class SleepHelper implements MethodBeforeAdvice,AfterReturningAdvice {

    public void before(Method method, Object[] arguments, Object target)

    throws Throwable {

    System.out.println("睡觉前");

    }

    public void afterReturning(Object rturnValue, Method method, Object[] arguments,

    Object target) throws Throwable {

    System.out.println("睡觉后");

    }

    }

    然后在spring配置文件中进行配置:

    <!--被代理目标对象-->

    <bean id="Human" class="cn.happy.dao.Human"></bean>

    <bean id="SleepHelper" class="cn.happy.aop.SleepHelper"></bean>

    //定义切点的常用的两种方式:1)使用正则表达式2)使用AspectJ表达式,

    //这里用正则表达式

    <!--顾问-->

    <bean id="BeforAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">

    <property name="advice" ref="BeforAdvice"></property>

    <property name="pattern" value=".*l.*g.*"></property>

    </bean>

    <!--代理对象-->

    // ProxyFactoryBean是一个代理,我们可以把它转换为

    //proxyInterfaces中指定的实现该interface的代理对象

    <bean id="serviceProxy" class="org.springframework.aop.framework.ProxyFactoryBean">

    <property name="target" ref="Human"></property>

    <property ame="interceptorNames" value="BeforAdvisor"></property>

    </bean>

    代理类

    public class StuTest {

    public static void main(String[] args) {

    //通过ClassPathXmlApplicationContext实例化Spring的上下文

    ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");

    //通过ApplicationContext的getBean()方法,根据id来获取Bean的实例

    Sleepable s=(Sleepable)context.getBean("Human");

    s.sleep();

    }

    }

    了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

    推荐文章

上一篇:Java培训:Struts2的配置文件

下一篇:使用AspectJ的注解AOP实现方式

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56