首页 > 其他分享 >aop的两种配置方法

aop的两种配置方法

时间:2024-07-01 21:08:38浏览次数:16  
标签:配置 Object System println 两种 result aop invocation public

一、实现接口并重写方法

实现org.aopalliance.intercept.MethodInterceptor接口,这是AOP Alliance规范中的接口,Spring AOP支持它。这种方式比较适合需要非常细粒度控制的场景。

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

public class LoggingInterceptor implements MethodInterceptor {

    @Override
    public Object invoke(MethodInvocation invocation) throws Throwable {
        System.out.println("Before method: " + invocation.getMethod().getName());
        try {
            Object result = invocation.proceed(); // 继续执行被拦截的方法
            return result;
        } finally {
            System.out.println("After method: " + invocation.getMethod().getName());
        }
    }
}

在spring配置中,将此拦截器注册到切面中

<aop:config>
    <aop:aspect id="loggingAspect" ref="loggingInterceptor">
        <aop:pointcut id="serviceMethods" expression="execution(* com.example.service.*.*(..))"/>
        <aop:around method="invoke" pointcut-ref="serviceMethods"/>
    </aop:aspect>
</aop:config>

<bean id="loggingInterceptor" class="com.example.aspect.LoggingInterceptor"/>

二、通过注解方式(以环绕通知为例)

@Aspect
@Component
public class LoggingAspect {

    @Around("execution(* com.example.service.*.*(..))")
    public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("Before method: " + joinPoint.getSignature().getName());
        try {
            Object result = joinPoint.proceed();
            return result;
        } finally {
            System.out.println("After method: " + joinPoint.getSignature().getName());
        }
    }
}

注意点:确保在配置类(root容器的配置类)上启用了AspectJ的自动代理支持,即使用@EnableAspectJAutoProxy。如果项目中未包含此注解,注解定义的切面将不会生效。

标签:配置,Object,System,println,两种,result,aop,invocation,public
From: https://www.cnblogs.com/pyimc/p/18278855/SSM-aop

相关文章

  • SSM配置文件分类及总结
    配置组件通常涉及以下几个方面数据访问配置配置数据源、JdbcTemplate、事务管理器等,以支持数据库操作。服务层与DAO层配置定义服务类和服务实现类、数据访问对象(DAO)的bean,以及它们之间的依赖关系。MVC配置包括视图解析器、控制器的扫描包配置、静态资源映射、消息转换器......
  • centos7 docker 配置阿里云镜像加速
    1、安装docker1.1卸载原有dockeryumremovedockerdocker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotatedocker-logrotatedocker-engine1.2 部署docker依赖yuminstall-yyum-utils1.3配置阿里云镜像加速yum-config-manage......
  • SpringMVC中的注解配置
    目录13、注解配置springmvc13.1、创建初始化的类,代替web.xml13.2、使用流程声明一个类来继承AbstractAnnotationConfigDispatcherServletInitializer,并且实现他的抽象方法实现配置SpringConfig的java文件实现SpringMvcConfig的java文件13.3、实例代码1.继承AbstractAnnotationConf......
  • linux网络配置与管理
    1.Setup配置(centos7之后使用nmtui)首先,查看网卡的信息,是否有IP地址。如图所示:图1查看网卡信息进入set设置,在终端输入“setup”,点击“enter”键。如图所示:图2进入setup设置点击“enter”后,就进入了setup配置界面了,选择“网络配置”。如图所示:图3......
  • STM32时钟配置
    STM32F10x时钟配置根据参考手册可知STM32F10x系列的时钟树如下:图中给了说明了HSE、HSI、LSI、LSE的全称。HSE(Thehighspeedexternalclocksignal),高速外部时钟信号,需要4-16MHz的外部振荡器HSI(Thehighspeedinternalclocksignal),高速内部时钟信号,使用8MHzRC振荡器......
  • SpringBoot项目配置文件加密
    前言防止配置文件敏感信息泄露,去年公司出现过类似事件,也防止源码泄露,对项目中的配置文件进行加密引入方式pom文件引入以下依赖<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</v......
  • tensorflow-gpu配置
    1.安装Anaconda下载地址:Anaconda|TheOperatingSystemforAI2.查询tensorflow-gpu不同版本所对应的python、cuDNN和CUDA的版本官网:在Windows环境中从源代码构建 | TensorFlow(google.cn) 3.使用conda安装相应的库#tensorflow_gpu-2.3.0condainitcondacrea......
  • nacos一个奇怪的问题:找不到正确的应用名-环境.后缀名配置文件
    spring:profiles:active:devapplication:name:system-apicloud:nacos:server-addr:192.168.101.65:8848discovery:namespace:devgroup:xuecheng-plus-projectconfig:namespace:devgr......
  • Spring的AOP概念详解
    AOP详解:1.介绍:面向切面编程,是一种将非业务代码与业务代码进行分离的一种思想,在实际开发中,往往有许多重复操作,例如事务提交,权限验证,保存口志等功能需要在业务代码重复调用,面向切面编程,就是将非业务代码进行抽取,然后在不修改原来代码的前提下,为我们的业务代码,添加额......
  • ASP.NET Core 6 (.NET 6) 配置使用kestrel server
    原文链接:https://blog.csdn.net/weixin_52026996/article/details/135929070简介:Kestrel是一个跨平台的、开源的、轻量级的HTTP服务器,它是ASP.NETCore的默认Web服务器。Kestrel是跨平台的,因此可以在不同的操作系统上运行,包括Windows、Linux和macOS。本文主要介绍ASP.......