Annotation-13-annotation spring aop expression 基于表达式进行拦截
场景
有时候 aop 的参数获取可能比较复杂,比如 id 标识的获取,每一个方法都不一样。
那么可以考虑通过 spring expression 的方式,让我们的参数获取更加灵活强大。
一、依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifact...
2018-07-02 15:26:27 |
Java
Annotation-12-annotation repeatable java的多重注解(重复注解)
jdk7
注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@Scope("request")
public @interface AuthValidation
{
String actionOfMenu();
String...
2018-07-02 15:26:27 |
Java
Annotation-11-如何获取 spring bean 上的注解信息
背景
设计了一套日志框架,希望通过注解指定时可以获取全局配置的信息,然后做一些对应的处理。
代码实现
获取类注解
@EnableAutoLog 注解是放在类上的,可以通过 applicationContext.getBeansWithAnnotation(EnableAutoLog.class) 获取,然后处理。
这里使用 @PostConstruct 做了一点优化,让这种查找只做...
2018-07-02 15:26:27 |
Java
Annotation-10-Aspect Order
情景
自己定义了一个 AOP,发现 spring 的 @Transactional 变得无效了。
如何指定优先级
注解
public @interface Order {
/**
* The order value.
* <p>Default is {@link Ordered#LOWEST_PRECEDENCE}.
* @see Ordered#getO...
2018-07-02 15:26:27 |
Java
Annotation-09-spring aop import 导入自动引入
需求
有时候我们希望写一个框架,让别人直接使用我们的注解。
然后这些注解就可以生效。
比如 spring 的 Cache 注解。
spring 的 @import 注解为我们带来了这种可能性。
方式
定义 aop
/**
* @author binbin.hou
* @since 0.0.4
*/
@Aspect
@Component
public class Retry...
2018-07-02 15:26:27 |
Java
Annotation-08-java annotation spring
Java Annotation with spring
Action.java
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Action {
/**
* 当前方法描述
* @return 描述
*/
...
2018-07-02 15:26:27 |
Java
Annotation-07-java complile annotation
Java 编译时注解
实际意义
本例子仅用于展现简单的编译时注解使用。
编译时注解,可以再编译时生成代码等。比如 lombok。
注解处理器
首先来了解下什么是注解处理器,注解处理器是javac的一个工具,它用来在编译时扫描和处理注解(Annotation)。
你可以自定义注解,并注册到相应的注解处理器,由注解处理器来处理你的注解。
一个注解的注解处理器,以Java代码(或者编译过...
2018-07-02 14:26:27 |
Java
Annotation-06-set value
设置注解的属性
这种使用场景比较少,但是不失为一种对于注解的深入理解。
实例
定义
Tag.java
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java....
2018-07-02 14:18:21 |
Java