栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring aspectj框架实现动态代理(aop-面向切面编程)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring aspectj框架实现动态代理(aop-面向切面编程)

需求分析:现在有一个接口实现类SomeServiceImpl,继承了一个抽象方法dosome,需要在不改实现类SomeServiceImpl的条件下为dosome方法添加功能,使得在dosome方法执行前会先打印前置方法。

(1) maven 依赖


junit
junit
4.11
test


org.springframework
spring-context
5.2.5.RELEASE


org.springframework
spring-aspects
5.2.5.RELEASE

(2)doSome方法

public class SomeServiceImpl implements SomeService {

    @Override
    public void doSome(String name,Integer age) {
        System.out.println("执行了dosome方法");
    }
}

(3)定义切面类

@Aspect
public class MyAspect {
    @Before(value = "execution(public void org.example.ba01.SomeServiceImpl.doSome(..))")
    public void before(){
        System.out.println("前置方法");
    }
}

(4)applicationContext.xml



    
    
    //声明自动代理生成器,会扫描容器中的切面类

(5)测试方法

public class AppTest 
{
    
    @Test
    public void shouldAnswerWithTrue()
    {
        String config="applicationContext.xml";
        ApplicationContext ctx=new ClassPathXmlApplicationContext(config);
        SomeService proxy=(SomeService)ctx.getBean("someService");
        proxy.doSome("lisi",20);

    }
}

成功

这种编程方式有什么好处呢,解耦合、减少代码重复,试想,如果你有一百个方法需要添加某种同样的功能,你不可能都去方法源代码中实现吧?利用面向切面编程的思想,可以达到一劳永逸的效果!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352097.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号