zoukankan      html  css  js  c++  java
  • Spring 使用javaconfig配置aop

    1.在xml中需要配置自动代理

    
    
    /**
     * 
     */
    package com.junge.demo.spring.dao;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.EnableAspectJAutoProxy;
    
    import com.junge.demo.spring.advice.MyLogImpl;
    
    /**
     * @author Administrator
     *
     */
    @Configuration
    @ComponentScan(basePackageClasses= {MyLogImpl.class,UserDao.class})
    @EnableAspectJAutoProxy
    public class DaoConfig {
    
    }

    2.java类需要添加@Aspect注解。

    package com.junge.demo.spring.advice;
    
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.After;
    import org.aspectj.lang.annotation.AfterReturning;
    import org.aspectj.lang.annotation.AfterThrowing;
    import org.aspectj.lang.annotation.Around;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    import org.aspectj.lang.annotation.Pointcut;
    import org.springframework.stereotype.Component;
    
    import com.alibaba.fastjson.JSONObject;
    
    @Component("myLog")
    @Aspect
    public class MyLogImpl {
        
        @Pointcut("execution(* com.junge.demo.spring.dao..*(..))")
        public void pointcut() {
            
        }
    
        @Before("pointcut()")
        public void beforeFunc() {
            System.out.println("beforeFunc ...");
    
        }
    
        @After("pointcut()")
        public void afterFunc() {
            System.out.println("afterFunc ...");
    
        }
    
        @AfterReturning("pointcut()")
        public void returnFunc() {
            System.out.println("returnFunc ...");
    
        }
    
        @AfterThrowing(pointcut="pointcut()", throwing="e")
        public void throwExpFunc(Exception e) {
            System.out.println("throwExpFunc ...");
            System.out.println(e.getMessage());
    
        }
    
        @Around("pointcut()")
        public void aroundFunc(ProceedingJoinPoint point) {
            System.out.println("arount before invoke ...");
            
            if (null != point.getArgs() && point.getArgs().length > 0) {
                for (Object arg : point.getArgs()) {
                    System.out.println("around args:" + JSONObject.toJSON(arg));
                }
            }
            System.out.println(point.getTarget());
            System.out.println(point.getThis());
            System.out.println(point.getKind());
            System.err.println(point.getClass());
            System.out.println(point.getSignature());
            
            try {
                Object result = point.proceed();
                System.out.println("around result:" + JSONObject.toJSONString(result));
                System.out.println("around after return ...");
            } catch (Throwable e) {
                System.out.println("around after throws ...");
            }
            
            System.out.println("around after ...");
    
        }
    
    }

     3.运行结果

    /**
     * 
     */
    package com.junge.demo.spring;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    import com.junge.demo.spring.dao.DaoConfig;
    import com.junge.demo.spring.dao.UserDao;
    import com.junge.demo.spring.dao.impl.cc.dd.ff.ee.SubClassTest;
    import com.junge.demo.spring.service.IPerface;
    import com.junge.demo.spring.service.ServiceConfig;
    
    /**
     * @author Administrator
     *
     */
    public class ServiceConfigApp {
    
        private static ApplicationContext applicationContext;
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            applicationContext = new AnnotationConfigApplicationContext(ServiceConfig.class, DaoConfig.class);
    //        System.out.println(applicationContext.getBeansOfType(IPerface.class));
    //        applicationContext.getBean(UserDao.class);
            
            applicationContext.getBean(SubClassTest.class).addTest(3, 1);
        }
    
    }

  • 相关阅读:
    dubbo+zookeeper报错:com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method
    CoreException: Could not get the value for parameter compilerId for plugin execution default-compile: PluginResolutionException: Plugin org.apache.maven.plugins:maven-compiler-plugin:3.1
    Spring容器加载配置文件
    Java基础(一)字符串之如何删除指定的字符
    Java基础(二)数组之如何排序数组并插入元素
    Java基础(一)字符串之如何比较字符串
    Spring的事务管理
    Java使用split()截取字符串
    JavaWeb过滤器实现页面跳转至登录页面
    jQuery获取session中的值
  • 原文地址:https://www.cnblogs.com/junge8618/p/8366180.html
Copyright © 2011-2022 走看看