• 使用AspectJ提供的注解方式实现aop


    spring实现aop的方式有一下几种       

            1、基于代理的AOP

            2、纯简单java对象切面

            3、@Aspect注解形式的

            4、注入形式的Aspcet切面

    下面是用@aspect注解形式实现的,首先是导入一些的jar包

    切面的代码

    @Component
    @Aspect
    public class Advice {
        @Before("init()")//通知
        public void log(){
            System.out.println("before do...");
        }
        
        @Pointcut("execution(* service.*.*(..))")//方法切入点,execution为执行的意思,*代表任意返回值,然后是包名,.*意思是包下面的所有子包。(..)代表各种方法.
    public void init(){
            
        }
    }

    实现类

    @Component("serviceImpl")
    public class ServiceImpl implements Service {
    
        @Override
        public void saySomething() {
    
            System.out.println("do..");
            
        }
    }

    spring的配置文件中添加

        <context:annotation-config></context:annotation-config>
        <context:component-scan base-package="service,advice"></context:component-scan>
        <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

    通过aop命名空间的<aop:aspectj-autoproxy />声明自动为spring容器中那些配置@aspectJ切面的bean创建代理,织入切面。当然,spring

    在内部依旧采用AnnotationAwareAspectJAutoProxyCreator进行自动代理的创建工作,但具体实现的细节已经被<aop:aspectj-autoproxy />隐藏起来了

    测试代码 

    public class Test {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            ApplicationContext ac = new ClassPathXmlApplicationContext("service/bean.xml");
            Service ser =  (Service) ac.getBean("serviceImpl");
            ser.saySomething();
        }
    
    }

    结果就是在输出do..之前输出了before do...

    实际应用中可以用来实现日志功能

  • 相关阅读:
    文件上传控件 jQueryFileUpload在 MVC3中的实现
    谈谈开心王国的用户注册页面
    一个个人网站如何融资一千万
    netTcpBinding三种方法实现调用函数
    MVC实现RadioButtonList
    网易盖楼回复的简易实现
    sqlserver复制表结构
    显示目录下所有文件列表
    Jira:用户权限设置
    C#:Socket通信
  • 原文地址:https://www.cnblogs.com/yeming/p/5444959.html
Copyright © 2020-2023  润新知