spring的aop怎么获取切点参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring的aop怎么获取切点参数相关的知识,希望对你有一定的参考价值。

参考技术A 比较简单的方式可以用JoinPoint举个列子。
package com.jf.my.Demo.AOP;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class TestAOPDemoTwo
@Pointcut("execution(* *.run*(..)) ")
public void any()

@Before(value = "any()")
public void before(JoinPoint join)
System.out.println("Method 2 before===========");

@After(value = "any()")
public void after(JoinPoint join)
System.out.println("Method 2 after============");

@AfterReturning(value = "any()",returning="ji")
public void around(String ji) // ProceedingJoinPoint pjp
System.out.println("ji");
System.out.println("retrun"+ji);


直接在方法里写joinpoint,spring会自己注入的,你可以去查查joinpoint的用法之类的东西,然后用下就好了。https://my.oschina.net/itblog/blog/211693这里面介绍的挺不错的
参考技术B joinPoint.getArgs()

Spring--AOP

AOP目的:为了解耦,可以让一组类共享相同的行为。

OOP中只能通过继承类和实现接口,来使代码的耦合度增强,且类继承只能是单继承。

Spring支持AspectJ的注解式切面编程:

  1)使用@AspectJ声明是一个切面;

  2)使用@After、@Before、@Arround定义建言,可直接将拦截规则(切点)作为参数;

  3)其中@After、@Before、@Arround参数的拦截规则为切点,为了使切点复用,可使用@PointCut专门定义拦截规则,然后在@After、@Before、@Arround的参数中调用;

  4)其中符合条件的每一个被拦截处为连接点。

 

Bean的Scope:

  1)Singleton:一个Spring容器中只有一个Bean的实例,此为Spring的默认配置,全容器共享一个实例

  2)Prototype:每次调用新建一个Bean的实例

  3)Request:Web项目中,给每一个http request 新建一个Bean实例

  4)Session:Web项目中,给每一个http session 新建一个Bean实例

  5)GlobalSession:给每一个portal http session 新建一个Bean实例

 

以上是关于spring的aop怎么获取切点参数的主要内容,如果未能解决你的问题,请参考以下文章

Spring aop 注解参数说明

框架[Spring]AOP拦截-使用切点:AspectJExpressionPointcut-切点语言

AOP中获取自定义注解的参数值

spring学习 注解AOP 通知传递参数

Spring 注解--AOP篇

Spring中的AOP——在Advice方法中获取目标方法的参数