Spring的切入点(一 静态Pointcut)

Pointcut即切入点,用于配置切面的切入位置。由于Spring中切入点的粒度是方法级,因此在Spring AOP中Pointcut的作用是配置哪些类中哪些方法在我们定义的且入点之内、哪些方法应该被过滤排除。Spring的Pointcut分为静态Pointcut、动态Pointcut和用户自定义Pointcut三种,其中静态Pointcut只是需要考虑类名、方法名;动态Pointcut除此之外,还要考虑方法的参数,以便在运行时可以动态的确定切入点的位置。

1、静态Pointcut

静态即意味着不变,例如方法和类的名称。因此我们可以根据类和方法的签名来判定那些类的哪些方法在我们定义的切入点之内、哪些应该被过滤排除。

Spring中定义中如下几个静态Pointcut的实现类,介绍如下:

1、NameMatchMethodPointcut:只能对方法名进行判别的静态Pointcut实现类。

使用范例如下:

代码

<bean id="NameMatchMethodPointcut" class="org.springframework.aop.support.NameMatchMethodPointcut">
   <property name="mappedNames">
     <list>
       <value>pos*</value>
       <value>start</value>
     </list>
  </property>
</bean> 

注意:post*表示包含所有以pos开始的方法。(大小写敏感)。

此外,NameMatchMethodPointcut还暴露了ClassFilter类型的classFilter属性,可以用于指定ClassFilter接口的实现类来设置类过滤器。ClassFilter接口的定义如下:

代码

package org.springframework.aop;

public interface ClassFilter {

  boolean matches(Class clazz);
  ClassFilter TRUE = TrueClassFilter.INSTANCE;
} 
package org.springframework.aop;

其中matches方法用于类的匹配,参数clazz是需要匹配的目标类,匹配成功则返回true。

时间: 2024-10-06 10:44:28

Spring的切入点(一 静态Pointcut)的相关文章

springaop事务-Spring 中的Annotation 关于@Pointcut 的问题

问题描述 Spring 中的Annotation 关于@Pointcut 的问题 package com.bjsxt.aop; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; impo

Spring的切入点(二 静态Pointcut的例子)

下面以JdkRegexpMethodPointcut为例,通过一个完整的范例展示如何使用静态切入点(完整工程代码见例程4.3).在工程中我们定义一个People类和一个切面,并将他们在Spring xml配置文件中联系起来.当People对象执行我们切入点中定义的方法时,前置装备LogerPeople将会给出相应的提示信息. 新建一个工程AOP_Test4.3,添加Spring开发库后,新建aop.test包. 创建目标类People,该类有speak.Running.Loving.died四个

Spring的切入点(三 动态Pointcut)

由于动态切入点除了要考虑方法的名称等静态信息外,还要考虑方法的参数.由于它是动态的,在执 行时既要计算方法的静态信息,还要计算其参数,结果也不能被缓存.因此,动态切入点要消耗更多的系 统资源. Spring中提供了如下几种动态切入点的实现,说明如下: 1.ControlFlowPointcut:控制流程切入点.比如只有在某个特定的类或方法中调用某个连接点时, 装备才会被触发,这时就可以使用ControlFlowPointcut.但是它的系统开销很大,在追求高效的应用中 ,不推荐使用. 2.Dyn

关于spring aop切入点配置问题。

问题描述 我在的代码是这样的.<aop:config> <aop:aspect id="TestAspect" ref="aspectBean"> <!--配置com.spring.service包下所有类或接口的所有方法--> <aop:pointcut id="businessService" expression="execution(* com.catsic.business.**.ac

spring AOP 切入点方法作用的问题

问题描述 package com.longthsoft.learn.spring; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; @Aspect public class SimpleAspect { @Pointcut("execution(* com.longth

【spring boot】7.静态资源和拦截器处理 以及继承WebMvcConfigurerAdapter类进行更多自定义配置

   开头是鸡蛋,后面全靠编!!! ========================================================  1.默认静态资源映射路径以及优先顺序   Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性. 建议大家使用Spring Boot的默认配置方式,提供的静态资源映射如下: classpath:/META-INF/resources classpath:/resources

spring mvc-filter如何对静态资源.css/.js/.jpg不进行过滤

问题描述 filter如何对静态资源.css/.js/.jpg不进行过滤 1C web.xml中filter配置 <filter> <filter-name>loginFilter</filter-name> <filter-class>com.cbt.Interceptor.LoginFilter</filter-class> <init-param> <param-name>loginPage</param-na

spring 4.2.6 mvc 静态资源访问问题

问题描述 spring 4.2.6 mvc 静态资源访问问题 ![新进公司, 尝试自己重新拾起搭一个springmvc框架,可是一个静态资源访问问 题拦住了我两天,求大神帮忙: 图片说明](http://img.ask.csdn.net/upload/201605/20/1463737807_800158.png) 这是使用jar包 web.xml 配置: springmvc <context-param> <param-name>contextConfigLocation<

spring 静态filed-spring 中怎样给静态Filed注入值

问题描述 spring 中怎样给静态Filed注入值 public class SpringMailSender { static JavaMailSenderImpl mailSender; } 在这个类当中有一个静态方法,要调用 mailSender,mailsender应该怎么注入