spring boot中使用切面注解

本文介绍了如何在Spring Boot中利用切面注解实现参数的加密和解密操作。首先,引入了切面依赖,并展示了项目目录结构。接着,定义了自定义的加密解密注解和AOP切面类,使用了Advice的五种增强注解:Before、After、AfterReturning、AfterThrowing和Around。示例中详细说明了各个注解的执行时机,以及如何配置秘钥和编写测试类进行验证。
摘要由CSDN通过智能技术生成

完成一个spring boot切面对参数加密解密的操作

引入依赖: 切面依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

完整依赖如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.wm</groupId>
    <artifactId>aspect-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>aspect-boot</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

项目目录结构:

 

自定义加密/解密的注解:

package com.wm.aspectboot.aop;


import java.lang.annotation.*;

/**
 * 安全字段注解,作用在加密/解密字段上
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface EncryptField {
}

 

package com.wm.aspectboot.aop;


import java.lang.annotation.*;
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Spring Boot ,可以使用 AOP(面向切面编程)来实现切面环绕。通过使用 AOP,我们可以在应用程序的不同部分添加横切关注点,而无需修改这些部分的源代码。 下面是一个示例,展示了如何在 Spring Boot 使用 AOP 进行切面环绕: 1.首先,我们需要创建一个切面,该需要使用 @Aspect 注解进行标注。 ```java @Aspect @Component public class LoggingAspect { } ``` 2.在切面,我们需要创建一个环绕通知方法,该方法需要使用 @Around 注解进行标注。 ```java @Around("execution(* com.example.demo.service.*.*(..))") public Object logMethodExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable { long startTime = System.currentTimeMillis(); Object result = joinPoint.proceed(); long endTime = System.currentTimeMillis(); logger.info(joinPoint.getSignature() + " executed in " + (endTime - startTime) + "ms"); return result; } ``` 3.在上面的代码,我们使用 @Around 注解来标注 logMethodExecutionTime 方法,该方法将会在 service 包下的所有方法执行前后进行环绕通知。在方法,我们记录了方法的执行时间,并通过日志打印出来。 4.最后,我们需要在 Spring Boot 应用程序启动上添加 @EnableAspectJAutoProxy 注解来启用 AOP 功能。 ```java @SpringBootApplication @EnableAspectJAutoProxy public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 通过上述步骤,我们就可以在 Spring Boot 应用程序使用 AOP 进行切面环绕了。 ### 回答2: Spring Boot是一个开发框架,可以简化Java开发过程。切面Spring AOP(面向切面编程)的一个重要概念。环绕通知则是AOP一种通知型。 在Spring Boot,我们可以使用切面环绕来实现一些跨越多个模块的通用逻辑。切面环绕可以在目标方法执行之前和之后执行一些自定义的业务逻辑,同时也可以修改目标方法的返回值或处理异常。 首先,我们需要创建一个切面,通过使用Spring提供的注解来定义切面的具体逻辑。我们可以使用@Aspect注解将一个标记为切面,接着使用@Before、@After、@Around等注解来定义对应的切入点和通知型。 在切面,我们需要定义一个环绕通知的方法,并在方法上使用@Around注解。在环绕通知方法,我们可以通过ProceedingJoinPoint参数来获取目标方法的信息。可以利用这个参数,在目标方法执行之前编写一些逻辑,在目标方法执行之后编写一些逻辑。同时,我们还可以通过proceed方法调用目标方法,并修改返回值或处理异常。 当定义好切面后,我们需要在应用的配置启用切面。可以使用@EnableAspectJAutoProxy注解来启用切面的自动代理功能。这样,Spring Boot会自动根据切面注解配置生成对应的代理,并在目标方法执行的时候,触发切面的逻辑。 总结来说,Spring Boot切面环绕是一种通过使用切面来定义环绕通知,实现一些跨越多个模块的通用逻辑的方式。通过切面环绕可以在目标方法执行之前和之后编写自定义的业务逻辑,同时还可以修改返回值或处理异常。 ### 回答3: Spring Boot是一个用于构建独立的、生产级的Spring应用程序的框架。切面(Aspect)是Spring框架的一个重要概念,用于对程序的特定方法进行拦截、增强或修改等操作。 在Spring Boot使用切面环绕的方式,可以实现对目标方法进行前置、后置、异常和最终通知的处理。首先,我们需要创建一个切面,并使用@Aspect注解进行标记。在切面,我们可以定义切点(Pointcut)和通知(Advice)。 切点指定了在何处拦截方法,可以使用@Pointcut注解进行定义。通知是在方法执行前后或发生异常时执行的一段代码,可以使用@Before、@After、@AfterReturning和@AfterThrowing等注解进行标记。在通知,我们可以获取方法的参数、返回值和异常等信息,并根据需要进行处理。 除了使用注解方式,我们还可以通过编程方式配置切面环绕。可以继承org.aspectj.lang.annotation.AspectJProxyFactory,并在其添加切点和通知等配置。然后,通过该的getProxy()方法获取代理对象,并使用代理对象调用目标方法。 在使用切面环绕时,我们可以通过在应用的配置文件添加@EnableAspectJAutoProxy注解,来启用Spring的AOP功能。此外,我们还可以使用@Order注解来确定切面的执行顺序,使用@Around注解来实现对目标方法的环绕处理。 总之,Spring Boot切面环绕是一种强大的功能,它可以对程序的特定方法进行拦截和增强等操作。通过使用切面环绕,我们可以实现非侵入式的功能扩展,提高代码的复用性和可维护性,并实现更好的业务逻辑控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值