• spring自定义注解


     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
     4     xmlns:context="http://www.springframework.org/schema/context"
     5     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     6         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
     7         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
     8     <aop:aspectj-autoproxy />
     9         
    10     <context:component-scan base-package="wjf.maven">
    11         <context:include-filter type="annotation"
    12             expression="org.aspectj.lang.annotation.Aspect" />
    13     </context:component-scan>
    14 </beans>
     1 package wjf.maven;
     2 
     3 import java.lang.annotation.Documented;
     4 import java.lang.annotation.ElementType;
     5 import java.lang.annotation.Retention;
     6 import java.lang.annotation.RetentionPolicy;
     7 import java.lang.annotation.Target;
     8 
     9 @Documented
    10 @Retention(RetentionPolicy.RUNTIME)
    11 @Target({ ElementType.METHOD, ElementType.PARAMETER })
    12 public @interface DemoAnnotation {
    13     //定义注解里的参数,通过default指定默认值
    14     String desc() default "##########无描述信息##########";
    15 }
     1 package wjf.maven;
     2 
     3 import org.aspectj.lang.ProceedingJoinPoint;
     4 import org.aspectj.lang.annotation.Around;
     5 import org.aspectj.lang.annotation.Aspect;
     6 
     7 //定义一个切面
     8 @Aspect
     9 public class DemoProcess {
    10      
    11     @Around(value = "execution(* wjf.maven.*.*(..)) && @annotation(log)")
    12     public Object aroundMethod(ProceedingJoinPoint pjd, DemoAnnotation log ) {
    13         Object result = null;
    14         System.out.println(log.desc());
    15         try {
    16             System.out.println("前置通知");
    17             result = pjd.proceed();
    18             System.out.println("后置通知");
    19         } catch (Throwable e) {
    20             System.out.println("异常通知");
    21         }
    22         System.out.println("返回通知");
    23         return result;
    24     }
    25 }
     1 package wjf.maven;
     2 
     3 import org.springframework.stereotype.Service;
     4 
     5 @Service
     6 public class AopTest {
     7 
     8     @DemoAnnotation(desc = "我是测试")
     9     public void test() {
    10         // System.out.println("hello world!!");
    11     }
    12     
    13     @DemoAnnotation
    14     public void test2() {
    15          System.out.println("hello world!!");
    16     }
    17 }

    有追求,才有动力!

    向每一个软件工程师致敬!

    by wujf

    mail:921252375@qq.com

  • 相关阅读:
    web页面性能优化之接口前置
    python大佬养成计划----flask_bootstrap装饰网页
    撸个查询物流的小程序,欢迎体验
    FullCalendar插件的基本使用
    GeekforGeeks Trie
    使用Django和Python创建Json response
    nginx-gridfs的安装
    Linux kernel config and makefile system
    hadoop日志分析
    安装STS报错(三)
  • 原文地址:https://www.cnblogs.com/wujf/p/5343820.html
Copyright © 2020-2023  润新知