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);
        }
    
    }

  • 相关阅读:
    pip安装requests时报 Requirement already satisfied: requests in d:pythonpyth... 的问题解决
    渗透测试靶场
    Spring Security核心类关系图
    Spring security 5 Authorize Configuration
    固定技术栈
    redis 指定端口 启动
    Spring 获取当前activeProfile
    通过进程编号 查询 监听端口
    lombok 插件安装
    idea 快捷键设置
  • 原文地址:https://www.cnblogs.com/junge8618/p/8366180.html
Copyright © 2011-2022 走看看