AOP注解日志处理简单理解
来源:互联网 发布:mac开机一半自动关机 编辑:程序博客网 时间:2024/05/17 04:42
理解注解:
1、首先注解是在JDK5.0及以后版本中引入的。他可以用于创建文档,跟踪代码中的依赖性,甚至执行基本的编译时检查,而且还可以作为在spring框架中进行注解试注入Bean属性,用来减少写配置文件。注解是以@+注解名在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解,单值注解、完整注解三类。他们都不会直接影响到程序的语义,只是作为注解存在,可以通过反射机制编程实现对这些元数据的访问。另外,你可以在编译时选择代码哩的注释是否只存在于源代码级,或者它也能在class文件中出现。
2、注释的3中基本类型
例如:@annotation(val1="data1",val2="data2")
3、java中提供了3个内置注释类型
a、override,这个大家都不陌生,他是只能用在方法上,对方法的重写
b、Deprecated 同样只能作用于方法
c、SuperssWarnings
作用:关闭特定的告警信息,
用法:@SuperssWarnings (value={"unchecked"})代码
4、在java中最重要的是元注解,元注解是什么呢?
5、写个简单的自定义注解例子:
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationName {
}
//这个注解只能用在类、接口或者是enum、方法名、之前,并且在运行时保持注解
使用这个注解:
@AnnotationName(value="test")
public class Test {
}
6、如果你要记录日志,那么这个注解中的值你可以写成你此刻运行的方法,在这里就有问题出现了,你注解到这里你怎么去读取你注解里的value值呢,
这里就用到了注解处理器,注解处理器其实就是一段处理自己编写的注解类的代码而已。并不用太多复杂的概念或者技术可以使用反射的方法去读取注解里边的值:在这里就必须将RetentionPolicy指定为RUNTIME
例子:
A、这是你执行的那个注解处理器
public class TestExcute
}
B、这个注解解释器所使用的是jdk自己的代理类生成机制,所以你所要记录的类必须是继承自一个接口,因为他这个生成的代理类可以理解为接口和你这个实现类之间的一个类,所以这个记录的类必须是要实现一个接口
接口:
@AnnotationName(value="Test1测试interface")
public interface Test1 {
}
实现类:
@AnnotationName(value="Test测试业务Test2")
public class Test2 implements Test1{
}
C、Action:
public class Test extends ActionSupport{
}
D、在spring配置文件中的配置:
<!-- 打开AOP的拦截功能,proxy-target-class:是用来控制注入的时实现类还是接口,默认是false表示只能注入接口,true:表示可以用类来注入-->
<aop:aspectj-autoproxy proxy-target-class="false"/>
<aop:config>
<!-- 声明一个切面 -->
<aop:aspect id="testExcuteAspect" ref="testExcute">
<!-- 声明一个装备,是在什么时候执行日志处理 -->
<!-- 声明一个切入点,
expression: 第一个*表示:通配符,表示返回任何类型,
<aop:pointcut expression="execution(* com.ckpt.logPackage.*.*(..))" id="logTest" />
<aop:around
</aop:aspect>
</aop:config>
<bean id="testExcute" class="com.ckpt.logPackage.TestExcute" scope="prototype"></bean>
<bean id="test" class="com.ckpt.Action.Test" scope="prototype">
<property name="test2" ref="test2"></property>
</bean>
<bean id="test2" class="com.ckpt.logPackage.Test2" scope="prototype"></bean>
E、struts2配置文件:
<action name="test" class="test" method="getTest" >
<result type="plainText"></result>
</action>
F、发布项目,在浏览器中直接访问Action打印出日志
7、ProceedingJoinPoint :使用这个类取处理日志,只能处理环绕通知
ProceedingJoinPoint is only supported for around advice
- AOP注解日志处理简单理解
- AOP注解日志处理简单理解
- AOP注解日志处理简单理解
- AOP注解日志处理简单理解
- aop注解简单日志
- Spring AOP处理日志
- Spring AOP处理日志
- Spring AOP处理日志
- controller日志AOP处理
- 简单理解AOP
- spring AOP简单理解
- 简单理解AOP
- Spring Aop简单理解
- aop简单注解实现例程
- 从头认识Spring-3.7 简单的AOP日志实现(注解版)-增加检查订单功能
- Spring-Aop处理记录日志
- spring-Aop应用日志处理
- 从头认识Spring-3.5 简单的AOP日志实现(注解版)-某方法之前的前后记录日志
- JAVA语言实现人机猜拳小游戏
- 工作踩的坑之五多张表统计数据
- 浅谈Java并发编程系列(六) —— 线程池的使用
- 欢迎使用CSDN-markdown编辑器
- linux下安装VMtools
- AOP注解日志处理简单理解
- Java phone,ip,idcard 获取地址信息
- pixhawk position_estimator_inav.cpp思路整理及数据流
- PHP开发环境软件安装
- 简易搭载NFS服务器
- Java学习之Hessian通信基础
- Django开发环境的搭建
- debounce 防抖和 throttle 节流
- Maven的pom.xml介绍