Spring中Aspect的切入点的表达式定义细节
用过很多次切面aspect了,对于表达式总是记得很模糊,今天总结一下。
1、切面做如下设置则只会拦截返回值为String类型的方法
@Aspect
public class MyInterceptor { @Pointcut("execution(java.lang.String cn.xjy.service.impl.PersonServiceBean.*(..))")
private void anyMethod() {
}// 声明一个切入点 @Override
public String getPersonName(Integer id) {
System.out.println("这是getPersonName方法");
return "yyy";
} }//即只会拦截这个方法
2、做如下配置则只会拦截,传入参数值第一个为String类型的方法(不管后面有没有其他方法)
@Aspect
public class MyInterceptor {
@Pointcut("execution(* cn.xjy.service.impl.PersonServiceBean.*(java.lang.String,..))")
private void anyMethod() {
}// 声明一个切入点 //即为这两个方法被拦截到
@Override
public void save(String name) {
System.out.println("这是save方法");
} @Override
public void update(String name,Integer id ) {
System.out.println("这是update方法");
}
}
3、做如下配置则会拦截到所有返回值类型为非void的方法
@Aspect
public class MyInterceptor { @Pointcut("execution(!void cn.xjy.service.impl.PersonServiceBean.*(..))")
private void anyMethod() {
}// 声明一个切入点 }
4、以下配置代表Spring框架会拦截cn.xjy.service包以及其子包下的所有类的所有方法
@Aspect
public class MyInterceptor {
@Pointcut("execution(* cn.xjy.service..*.*(..))")
private void anyMethod() {
}// 声明一个切入点 }
Spring框架会为满足cn.xjy.service..*底下所有的类创建代理对象 ;
创建代理对象:里面的类实现了接口–使用JDK创建动态代理技术来创建,若没有实现接口:采用CGlib的方法来创建代理对象
Spring中Aspect的切入点的表达式定义细节的更多相关文章
- Spring中的AOP(五)——定义切入点和切入点指示符
定义切入点 在前文(点击查看)中使用到的AdviceTest类中同一个切点(即* com.abc.service.*.advice*(..)匹配的连接点)却重复定义了多次,这显然不符合软件设计的原则, ...
- spring中bean的配置详解--定义parent
在工作中碰到了好多的配置文件,具体来说是spring 中bean配置的parent的配置,搞的我一头雾水,仔细看一下spring中有关bean的配置,剖析一下,具体什么含义! 一.Spring IoC ...
- 三种方式实现观察者模式 及 Spring中的事件编程模型
观察者模式可以说是众多设计模式中,最容易理解的设计模式之一了,观察者模式在Spring中也随处可见,面试的时候,面试官可能会问,嘿,你既然读过Spring源码,那你说说Spring中运用的设计模式吧, ...
- Spring中注解方式实现IOC和AOP
1.IOC注解 1.1 IOC和DI的注解 IOC: @Component:实现Bean组件的定义 @Repository:用于标注DAO类,功能与@Component作用相当 @Service:用 ...
- Spring中的Autowired注解和Resource注解的区别
1.所属jar包不同,Autowired是Spring中的Resource是JSR-250规范定义的注解
- Spring中@Autowired注解与自动装配
1 使用配置文件的方法来完成自动装配我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. ...
- spring 中bean学习笔记
spring 中bean 一.bean的定义和应用 1. bean 形象上类似于getXX()和setXX()的一种. 2. 由于java是面向对象的,类的方法和属性在使用中需要实例化. 3. 规律: ...
- 深入了解Spring中的容器
1.创建Bean的3种方式 1.1使用构造器创建bean实例 这是最常见的方式,如果不采用构造注入,bean类需要有默认构造函数.如果采用构造注入,则需要配置xml文件的<constructor ...
- 设计模式学习(二十四):Spring 中使用到的设计模式
设计模式学习(二十四):Spring 中使用到的设计模式 作者:Grey 原文地址: 博客园:设计模式学习(二十四):Spring 中使用到的设计模式 CSDN:设计模式学习(二十四):Spring ...
随机推荐
- c#代码加密
源代码保护:怎样利用MaxtoCode加密dotNet源代码 http://www.webkaka.com/blog/archives/MaxtoCode-encrypt-dotnet-program ...
- Python 函数 -getattr()
getattr(object, name[, default]) getatt() 函数用于返回一个对象属性值.object 对象.name 字符串,对象属性.object 默认返回值,如果不提供该参 ...
- 如何在项目中使用requireJS
本文主要讲讲如何在一个项目中合理的使用requireJS,来加载js代码,这里是个实际例子,讲解不多, 看详情请连接到:http://www.cnblogs.com/evaling/p/6722760 ...
- 监控mysql状态并发送Email
*/10 * * * * /shell/mysql_status.sh > /dev/null 2>&1 #!/bin/bash port55=`/usr/sbin/lsof - ...
- Unit07: MyBatis框架简介 、 MyBatis基本应用
Unit07: MyBatis框架简介 . MyBatis基本应用 1. myBatis (1)myBatis是什么? 是一个开源的持久层框架. 注:myBatis底层仍然是jdbc. (2)编程步骤 ...
- 模拟Linux修改实际、有效和保存设置标识
就是模拟setuid seteuid setreuid setresuid,感觉代码比书上大段的文字好记,就写成代码形式了. // setuid.cc: 模拟<unistd.h>中的设置用 ...
- 【Leetcode 338】 Counting Bits
问题描述:给出一个非负整数num,对[0, num]范围内每个数都计算它的二进制表示中1的个数 Example:For num = 5 you should return [0,1,1,2,1,2] ...
- bzoj4353: Play with tree
Description 给你一棵包含N个节点的树,设每条边一开始的边权为0,现在有两种操作: 1)给出参数U,V,C,表示把U与V之间的路径上的边权变成C(保证C≥0) 2)给出参数U,V,C ...
- NoSQL v.s. RDB
RDB 相对于 NoSQL 的劣势: 1. 集中式单点架构 2. 固定的数据模型: 可扩展性差,缺乏处理半结构化和非结构化数据的能力. 3. 扩容成本高:处理海量数据时存在性能瓶颈,大数据时代的存储需 ...
- [Java][Web]利用 referer 防盗链
String referer = request.getHeader("referer"); if(referer == null || !referer.startsWith(& ...