文档章节

spring中自定义注解(annotation)与AOP中获取注解

王春-海子
 王春-海子
发布于 2016/04/15 15:04
字数 319
阅读 651
收藏 0

一、自定义注解(annotation)

自定义注解的作用:在反射中获取注解,以取得注解修饰的类、方法或属性的相关解释。

package me.lichunlong.spring.annotation;

import java.lang.annotation.Documented;   
import java.lang.annotation.ElementType;   
import java.lang.annotation.Retention;   
import java.lang.annotation.RetentionPolicy;   
import java.lang.annotation.Target;   

//自定义注解相关设置
@Target({ElementType.METHOD})   
@Retention(RetentionPolicy.RUNTIME)   
@Documented 

public @interface LogAnnotation {   

//自定义注解的属性,default是设置默认值
    String desc() default "无描述信息";   
}  


二、自定义注解的使用

package me.lichunlong.spring.service;

import me.lichunlong.spring.annotation.LogAnnotation;
import me.lichunlong.spring.jdbc.JdbcUtil;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
 //与其它注解一样的使用
    @LogAnnotation(desc="this is UserService")
    public void add() {
        System.out.println("UserService add...");
    }
}





三、AOP中获取注解

//    环绕通知:类似与动态代理的全过程
//    携带参数ProceedingJoinPoint,且必须有返回值,即目标方法的返回
    @Around(value = "execution(* me.lichunlong.spring.service.*.*(..)) && @annotation(log)")
    public Object aroundMethod(ProceedingJoinPoint pjd, LogAnnotation log) {
        Object result = null;
        System.out.println(log.desc());
        try {
            System.out.println("前置通知");
            result = pjd.proceed();
            System.out.println("后置通知");
        } catch (Throwable e) {
            System.out.println("异常通知");
        }
        System.out.println("返回通知");
        return result;
    }

四、配置扫描aop

<aop:aspectj-autoproxy proxy-target-class="true"/>

五、解决在Controller中注解不生效

    一般aop扫描是配置到ApplicationContext.xml,嘿嘿,问题就在这!Spring MVC加载的WebApplicationContext而不是ApplicationContext,所以应该把schema和加载加到 spring-mvc.xml,然后?一切正常。


本文转载自:

王春-海子
粉丝 7
博文 49
码字总数 11981
作品 0
江北
技术主管
私信 提问
Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录

目的: 需要对一些事物的操作进行日志记录,如果在service内进行记录,大量的代码重复,并且维护比较麻烦。所以采用AOP的方式对service进行拦截。使用自定义注解的目的则是判断是否需要记录日...

凯文加内特
2015/05/12
7.1K
2
SpringBoot + AOP + MySQL监控系统数据变更实战

记录一下Spring AOP切入DAO层,进行数据监控。 在写这个需求时,从网上找了很多的资料,大部分都是没有解决相关问题的。当然也有少数部分解决,但用的还是SSM架构的xml配置。一开始我的出发点...

花漾年华
04/10
15
0
Spring注解编程(一)---Java中的注解

Spring中的注解大概可以分为两大类: 1)spring的bean容器相关的注解,或者说bean工厂相关的注解; 2)springmvc相关的注解。 spring的bean容器相关的注解,先后有:@Required, @Autowired...

lemonLove
2018/08/08
215
0
解释@Component @Controller @Service @Repository

Spring配置管理BeanXML.net 对Spring的注解标签刚刚接触,所以就找了几个常用的,记录下,感觉注解用了之后,会在*.xml文件中大大减少配置量。以前我们每个Bean都得到配置文件中配置关联下。...

leesama
2013/05/29
120
0
Spring3事务管理——使用@Transactional 注解

先让我们看代码吧! 以下代码为在“Spring3事务管理——基于tx/aop命名空间的配置”基础上修改。首先修改applicationContext.xml如下: …<!-- 定义一个数据源 --><bean id="dataSource" cla...

guanzhenxing
2014/03/30
72.5K
1

没有更多内容

加载失败,请刷新页面

加载更多

Handler消息传递机制分析

Handler的用途和用法 写过Android程序的人大概都会遇到ANR(Application Not Responding)。如果程序在一段时间内没有响应,系统就会弹出一个对话框,让用户选择继续等待还是强制关闭应用。为...

tommwq
今天
5
0
JS前端MD5加密

Bootstrap官网获得md5 js地址:https://www.bootcdn.cn/blueimp-md5/ <!--MD5加密--><script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.js"></script> 使用方法: md5(pwd)......

被毒打的程序猿_先瑞
今天
6
0
BigDecimal 去后面无用的0的方法

BigDecimal a=new BigDecimal("0.1000"); System.out.println(a.stripTrailingZeros().toPlainString());...

xiaodong16
今天
7
0
JAVA--高级基础开发

[集合版双色球] 十二、双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1—33中选择;蓝色球号码从1—16中选择;请随机生成一注双色球号码。(要求同色号码...

李文杰-yaya
昨天
25
0
聊聊rocketmq broker的CONSUMER_SEND_MSG_BACK

序 本文主要研究一下rocketmq broker的CONSUMER_SEND_MSG_BACK CONSUMER_SEND_MSG_BACK rocketmq/common/src/main/java/org/apache/rocketmq/common/protocol/RequestCode.java public class......

go4it
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部