最新公告
  • 欢迎您光临极客文库,登录获取更多编程学习资源及文章!立即加入我们
  • Spring AOP之带有切入点的切面的配置案例

    PointcutAdvisor 切点切面

    使用普通Advice作为切面,将对目标类所有方法进行拦截,不够灵活,在实际开发中常采用带有切点的切面。

    常用PointcutAdvisor实现类:

    – DefaultPointcutAdvisor 最常用的切面类型,它可以通过任意Pointcut和Advice组合定义切面

    – JdkRegexpMethodPointcut构造正则表达式切点

    代码演示

    打开IDEA,新建一个demo4,之前做的案例是有接口的,下面我们来个没有接口的。新建一个CustomerDao,完成下面四个方法。

    package com.jikewenku.aop.demo4;
    
    public class CustomerDao {
        public void find(){
            System.out.println("查询客户...");
        }
    
        public void save(){
            System.out.println("保存客户...");
        }
    
        public void update(){
            System.out.println("修改客户...");
        }
    
        public void delete(){
            System.out.println("删除客户...");
        }
    }
    

    新建一个通知的类型MyAroundAdvice

    package com.jikewenku.aop.demo4;
    
    import org.aopalliance.intercept.MethodInterceptor;
    import org.aopalliance.intercept.MethodInvocation;
    
    public class MyAroundAdvice implements MethodInterceptor {
        public Object invoke(MethodInvocation invocation) throws Throwable {
            System.out.println("环绕前增强===================");
    
            Object obj = invocation.proceed();
    
            System.out.println("环绕后增强===================");
            return obj;
        }
    }
    

    我们的目标对象就建好了,接下来再创建个Spring的配置文件applicationContext2.xml

    
    
    
        
        
    
        
        
    
        
        
            
        
    
    
    
        
            
            
            
        
    
    

    新建一个测试类SpringDemo4,注意这是没有增强的,我们先来看一下效果

    package com.jikewenku.aop.demo4;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import javax.annotation.Resource;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext2.xml")
    public class SpringDemo4 {
    
        @Resource(name="customerDao")
        private CustomerDao customerDao;
    
        @Test
        public void demo1(){
            customerDao.find();
            customerDao.save();
            customerDao.update();
            customerDao.delete();
        }
    }
    

    运行程序

    我们再注入代理对象,修改上面的部分代码如下

    // @Resource(name="customerDao")
        @Resource(name="customerDaoProxy")
        private CustomerDao customerDao;
    

    运行程序

    这个时候就是环绕增强了,执行查询、保存、修改、删除之前和之后都增强了,

    如果我们想增强save方法又该怎么写呢?

    可以这样配置

    
    

    运行程序,就会只针对save方法进行增强了

    如果还想保存还想删除呢?又该怎么配呢?

    可以这样配置

    
    

    运行一下看结果

    本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
    极客文库 » Spring AOP之带有切入点的切面的配置案例

    常见问题FAQ

    如果资源链接失效了怎么办?
    本站用户分享的所有资源都有自动备份机制,如果资源链接失效,请联系本站客服QQ:2580505920更新资源地址。
    如果用户分享的资源与描述不符怎么办?
    可以联系客服QQ:2580505920,如果要求合理可以安排退款或者退赞助积分。
    如何分享个人资源获取赞助积分或其他奖励?
    本站用户可以分享自己的资源,但是必须保证资源没有侵权行为。点击个人中心,根据操作填写并上传即可。资源所获收益完全归属上传者,每周可申请提现一次。
    如果您发现了本资源有侵权行为怎么办?
    及时联系客服QQ:2580505920,核实予以删除。

    参与讨论

    • 108会员总数(位)
    • 3700资源总数(个)
    • 5本周发布(个)
    • 2 今日发布(个)
    • 202稳定运行(天)

    欢迎加入「极客文库」,成为原创作者从这里开始!

    立即加入 了解更多
    成为赞助用户享有更多特权立即升级