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怎么获取切点参数的主要内容,如果未能解决你的问题,请参考以下文章