zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    javascript数据结构
    uni-app — 一套前端开发跨平台应用的终极解决方案
    从函数式编程到Ramda函数库(二)
    从函数式编程到Ramda函数库(一)
    node.js爬取数据并定时发送HTML邮件
    vue cli3.0 结合echarts3.0和地图的使用方法
    vue加载优化策略
    C#时间格式化
    wpf 调用线程无法访问此对象,因为另一个线程拥有该对象。
    使用oracle数据库开发,异常总结
  • 原文地址:https://www.cnblogs.com/wujf/p/5343820.html
Copyright © 2011-2022 走看看