一、自定义注解(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;
}
本文来源于:http://blog.csdn.net/qpfjalzm123/article/details/45061701
相关推荐
在Spring框架中,自定义注解的解析是一个强大的特性,允许开发者根据业务需求创建特定的注解,并在Spring容器启动时自动处理这些注解。本文将深入探讨如何在Spring环境中通过`component-scan`配置来处理自定义Java...
本示例主要探讨如何在Spring中创建和使用自定义注解,以及与AOP结合实现动态代理。 首先,我们需要了解自定义注解的基本结构。在Java中,自定义注解是以`@interface`关键字定义的。例如,我们可以创建一个名为`...
在Java编程语言中,注解(Annotation)是一种元数据,它提供了向编译器、工具或运行时系统提供额外信息的方式。自定义注解允许开发者创建自己的标记来满足特定需求,比如代码生成、验证、持久化等。本文将深入探讨...
Spring Boot 中自定义注解结合 AOP 实现主备库切换问题 在 Spring Boot 应用程序中,实现主备库切换是非常重要的,以减少主库的压力和提高系统的可用性。其中,使用自定义注解结合 AOP(Aspect-Oriented ...
在Spring中,定义一个自定义注解,比如`@Loggable`,用于标记需要记录日志的方法。注解的定义如下: ```java @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Loggable { ...
SpringBoot AOP,即面向切面编程,是Spring框架中的一个重要特性,用于实现代码的横切关注点,如日志记录、事务管理、权限验证等。AOP通过使用代理模式,将这些关注点与核心业务逻辑分离,使得代码更加模块化,更...
在本资料"Spring_Annotation_AOP"中,我们将深入探讨Spring框架如何利用注解实现AOP,以及其背后的原理和实践应用。 面向切面编程(AOP)是一种编程范式,旨在提高代码的可维护性和可重用性,通过将关注点分离,...
总结来说,这个示例展示了如何在Spring Boot项目中自定义注解,将其应用于Java Bean的方法,以及如何利用AOP来实现全局扫描和自动执行。这样的实践在系统监控、性能分析和故障排查中非常有用,能够帮助开发者更好地...
在Spring Boot应用中,我们可以通过自定义注解和Spring AOP(面向切面编程)来实现这一功能。下面将详细解释这个主题。 首先,了解Spring AOP的概念。AOP是面向切面编程,它允许我们在不修改源代码的情况下,通过预...
在Java开发中,Spring框架是广泛使用的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器。Spring的注解功能极大地简化了配置,使得开发者可以更专注于业务逻辑。本篇将深入探讨如何自定义注解...
然后在Spring配置中,通过AOP(面向切面编程)拦截器来处理这个注解,实现自动事务管理。 总结: 自定义注解是Java中的一个重要特性,它允许开发者创建自己的元数据,提高代码的可读性和可维护性。通过定义、使用、...
在Java编程语言中,注解(Annotations)是一种元数据,用于提供有关代码的信息,这些信息可以被编译器或运行时...此外,还可以结合Spring框架的AOP特性,将注解驱动的逻辑进一步自动化,提高代码的可维护性和可扩展性。
对于验证,通常会结合AOP(面向切面编程)框架如Spring AOP,或者在运行时通过反射检查注解的存在和值是否符合预期。例如,如果`MyCustomAnnotation`用于验证字段非空,可以这样处理: ```java public void ...
以下是一些常用的Spring注解: 1. **@Component** - 用于标记一个类作为Spring管理的Bean。 - 可以配合@ComponentScan注解使用,自动扫描指定包下的所有组件。 2. **@Service** - 特别适用于业务逻辑层的服务...
在实际开发中,自定义注解和反射的应用场景非常广泛,比如Spring框架中的依赖注入、AOP切面编程、日志记录、数据校验等。通过注解,我们可以将业务逻辑与配置分离,使得代码更加整洁,同时减少硬编码,提高代码的...
### Spring框架中的Annotation注解详解 #### 一、Spring与Annotation的基本概念 Spring框架通过引入Annotation,极大地简化了Java开发中的依赖注入(Dependency Injection, DI)和面向切面编程(AOP)的过程。...
这篇博客"使用EJB+Annotation实现AOP的DEMO"主要介绍了如何在EJB中利用注解(Annotation)来实现AOP的功能。在Java EE中,EJB 3.0及后续版本引入了大量的注解,使得开发者可以免去编写XML配置文件,直接在代码中声明...
在本文中,我们将学习如何在 Spring 项目中使用自定义注解和 Aspect 来实现日志记录功能。我们将从头开始,创建一个简单的 Spring Boot 项目,然后使用自定义注解和 Aspect 来实现日志记录。 自定义注解 首先,...
Spring提供了两种主要的AOP实现方式:基于代理(Proxy-based)和基于注解(Annotation-based)。 - **基于代理的AOP**:Spring使用JDK动态代理或CGLIB动态代理创建目标对象的代理,代理对象在调用目标方法前后执行...