springboot之JoinPoint的getSignature方法

在使用springboot写aop的时候,有个JoinPoint类,用来获取代理类和被代理类的信息。

这个文章记录一下JoinPoint的getSignature方法返回的是什么格式。

不废话,贴代码

package org.aspectj.lang;

public interface Signature {
    String toString();

    String toShortString();

    String toLongString();

    String getName();

    int getModifiers();

    Class getDeclaringType();

    String getDeclaringTypeName();
}

打印输出,getString是测试类的方法名,TestController是类名

joinPoint.getSignature().toString():String com.fast.web.controller.TestController.getString()
joinPoint.getSignature().toShortString():TestController.getString()
joinPoint.getSignature().toLongString():public java.lang.String com.fast.web.controller.TestController.getString()
joinPoint.getSignature().getName():getString
joinPoint.getSignature().getModifiers():1
joinPoint.getSignature().getDeclaringType():class com.fast.web.controller.TestController
joinPoint.getSignature().getDeclaringTypeName():com.fast.web.controller.TestController

冒号前面是使用的方法,后面是本次测试输出的结果。

附上被测试的类:

package com.fast.web.controller;

import com.fast.framework.dao.TestDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class TestController {

    @Autowired
    private TestDao testDao;

    @RequestMapping("/test")
    public String getString() {
        int i = testDao.selectBase();
        return String.valueOf(i);
    }
}

 

  • 15
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中,可以使用Aspect Oriented Programming (AOP)来实现方法前置调用。AOP是一种编程范式,可以在不修改源代码的情况下,通过定义切面和通知来实现代码的横向切割。 具体来说,我们可以通过定义一个切面类,在其中定义一个前置通知方法,来实现方法前置调用。例如,下面是一个在方法执行前记录日志的切面类: ``` @Aspect @Component public class LoggingAspect { @Before("execution(* com.example.demo.service.*.*(..))") public void logBefore(JoinPoint joinPoint) { String methodName = joinPoint.getSignature().getName(); String className = joinPoint.getTarget().getClass().getSimpleName(); System.out.println("Calling method " + methodName + " of class " + className); } } ``` 在上面的代码中,我们通过@Aspect注解将LoggingAspect类标记为切面类,通过@Before注解将logBefore方法标记为前置通知方法。其中,execution(* com.example.demo.service.*.*(..))表示匹配com.example.demo.service包下所有类的所有方法。在logBefore方法中,我们使用JoinPoint获取当前方法的名称和所属类的名称,并打印日志信息。 需要注意的是,在使用AOP时,需要在Spring Boot应用的配置类中开启AOP自动配置,例如: ``` @SpringBootApplication @EnableAspectJAutoProxy public class DemoApplication { // ... } ``` 这样,在应用启动时,Spring Boot会自动为我们创建代理对象,并在调用方法前后执行相应的通知方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值