java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot集成AOP

SpringBoot集成AOP的代码示例

作者:HBLOG

AOP是一种编程范式,它旨在将横切关注点(cross-cutting concerns)从应用程序的业务逻辑中分离出来,横切关注点是那些在多个模块中重复出现的功能,如日志记录、性能监控、事务管理、安全控制等,本文介绍了Spring Boot如何集成AOP,需要的朋友可以参考下

1.什么是AOP?

AOP(Aspect Oriented Programming,面向切面编程)是一种编程范式,它旨在将横切关注点(cross-cutting concerns)从应用程序的业务逻辑中分离出来。横切关注点是那些在多个模块中重复出现的功能,如日志记录、性能监控、事务管理、安全控制等。AOP允许开发者将这些关注点模块化,并在不影响应用程序主要功能的情况下,将它们编织到应用程序的各个点上。

AOP的关键概念

AOP的实现方式

AOP可以通过以下几种方式实现:

实现AOP的关键技术

AOP的主要优点是能够减少业务逻辑中的重复代码,提高代码的模块化程度,使得关注点更加集中,同时也提高了代码的可维护性和可读性。在实际应用中,AOP经常被用于企业级应用开发,如在Spring框架中广泛使用。

2.代码工程

实验目标

采用@aspect注解来实现aop

pom.xml

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot-demo</artifactId>
        <groupId>com.et</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>aspect</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
        </dependency>
       
    </dependencies>
</project>

controller

package com.et.aspect.controller;

import com.et.aspect.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
public class HelloWorldController {
    @Autowired
    TestService testService;


    @RequestMapping("/hello")
    public Map<String, Object> showHelloWorld(){
        Map<String, Object> map = new HashMap<>();
        String str=  testService.sayHello("liming");
        map.put("msg",str);
        return map;
    }
}

service

package com.et.aspect.service;

public interface TestService {
    public String sayHello(String name) ;
}

package com.et.aspect.service.impl;

import com.et.aspect.service.TestService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * @author liuhaihua
 * @version 1.0
 * @ClassName TestServiceImpl
 * @Description todo
 * @date 2024/09/05/ 9:21
 */
@Service
@Slf4j
public class TestServiceImpl implements TestService {
    @Override
    public String sayHello(String name) {
        String  sss="hello,"+name;
        log.info(sss);
        return sss;
    }
}

aspect

@Pointcut("execution(* com.et.aspect.service..*.*(..))")
public void aopPoint() {

}

@Before("aopPoint()")
public void doBefore(JoinPoint point) throws Throwable {
    log.info("before ....");
}
@After("aopPoint()")
public void doAfter(JoinPoint point) throws Throwable {
    log.info("after ....");
}

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

3.测试

以上就是Spring Boot集成AOP的代码示例的详细内容,更多关于Spring Boot集成AOP的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文