- 浏览: 1067882 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
定义的接口
package com.aspectaop;
public interface IUserDao {
/* (non-Javadoc)
* @see com.aspectaop.IUserDao#save()
*/
/* (non-Javadoc)
* @see com.aspectaop.IUserDao#save(java.lang.String)
*/
public abstract void save(String name);
/* (non-Javadoc)
* @see com.aspectaop.IUserDao#update()
*/
/* (non-Javadoc)
* @see com.aspectaop.IUserDao#update()
*/
public abstract String update();
/* (non-Javadoc)
* @see com.aspectaop.IUserDao#doThrow()
*/
public abstract void doThrow();
}
接口实现类,分别定义了传入的参数,返回有参数以及异常等方法
package com.aspectaop;
public class UserDaoImpl implements IUserDao {
/* (non-Javadoc)
* @see com.aspectaop.IUserDao#save()
*/
/* (non-Javadoc)
* @see com.aspectaop.IUserDao#save(java.lang.String)
*/
public void save(String name)
{
System.out.println("这是保存方法!");
}
/* (non-Javadoc)
* @see com.aspectaop.IUserDao#update()
*/
/* (non-Javadoc)
* @see com.aspectaop.IUserDao#update()
*/
public String update()
{
System.out.println("这是更新方法!");
return "这是更新方法返回的值!";
}
/* (non-Javadoc)
* @see com.aspectaop.IUserDao#doThrow()
*/
public void doThrow()
{
throw new RuntimeException("返回了例外!");
}
}
定义切面方法
package com.aspectaop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class AspectBean {
@Pointcut("execution(* com.aspectaop.UserDaoImpl.*(..))" )
public void anyWay()
{}
@Before("anyWay() && args(name)")
//这里采取的是args(name)的方法,表示被代理的方法传入的参数,在doValidate中的name要和这个名字对应,
并且这里定义的是String表示只有方法中传入参数类型是STRING的,才会被拦截
public void doValidate(String name)
{
System.out.println("这是事前方法.."+"获得事前方法的参数:"+name);
}
@AfterReturning(pointcut="anyWay()",returning="result")
//这里用returning表示要返回方法的值,然后作为参数传递到doAfterReturning中,注意doAfterReturning中的result也要和returning="result"中的result对应
public void doAfterReturning(String result)
{
System.out.println("这是最终方法.."+"获得最终方法的参数:"+result);
}
@AfterThrowing(pointcut="anyWay()",throwing="e")
//该部分解释和返回值的一致
public void doAfterThrowing(Exception e)
{
System.out.println("例外通知:"+e);
}
@Around("anyWay()")
//环绕通知必须按照以下方法签名来写,除了doAround的这个方法名可以自己定义和pjp这个名字可以自己定义以外,然后执行pjp.proceed()方法才会被执行
public Object doAround(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("执行前");
Object o = pjp.proceed();
System.out.println("执行后");
return o;
}
}
- aspectaop.rar (2 KB)
- 下载次数: 29
发表评论
-
spring整合memeched
2017-11-23 14:18 501XMemcached是一个基于Java nio的memcac ... -
Spring 4 MVC @RestController 注解实现REST Service
2017-11-07 10:56 1004简短 & 快速介绍REST REST表示 Repr ... -
SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程
2017-10-25 15:54 5391、基本概念 1.1、Spring Sp ... -
spring mvc 文件上传
2017-10-03 23:14 527直接上代码吧,大伙一看便知 这时:commonsmulti ... -
SpringMVC对静态资源进行缓存
2017-09-26 15:19 404在dispatcher-servlet.xml中配置: ... -
springmvc常用注解标签详解
2017-09-12 08:30 3651、@Controller 在SpringMVC ... -
Spring JdbcTemplate 与 事务管理 学习
2014-11-12 09:35 768Spring的JDBC框架能够承担资源管理和异常处理的工作, ... -
Spring中使用annotation注入
2014-11-12 08:42 670我们使用Spring 一般式在xml配置文件中进行注入.但是 ... -
spring集成数据库连接池
2014-11-07 14:30 812我项目中使用的是proxool数据库连接池, 首先在web ... -
spring+xifre 发布webservice服务
2011-12-28 10:01 1660利用xfire编写webservice的例子,内容如下1. x ... -
spring3.0事物配置
2011-11-02 16:47 1869第一种配置方法:基于XML的事务管理 这种方法不需要对原有的 ... -
spring 事物配置全文
2011-10-20 10:39 1040根据代理机制不同,有以下几种配置方式: 先定义 ... -
spring 2.0使用AOP实例(基于Annotation的配置方式)
2011-10-19 14:53 1208使用Java5注解配置及使用Spring AOPSpring2 ... -
spring 2.0使用AOP实例(基于XML的配置方式)
2011-10-19 14:44 1411设计系统的核心业务组件。基于针对接口编程的原则,一个好习惯是先 ... -
spring1.x使用AOP实例
2011-10-19 08:23 1362spring1.x使用AOP配置。 applicationC ... -
使用 Spring 注释学习笔记
2011-10-18 10:33 833概述 注释配置相对于 XML 配置具有很多的优势: 它可 ... -
spring 3.0配置实用例-applicationContext.xml 空白文档
2011-10-18 10:24 2333<?xml version="1.0" ... -
使用spring2.5注释驱动的IOC功能
2011-10-13 14:26 710概述 注释配置相对于 XML 配置具有很多的优势: 它可 ... -
利用Annotation来实现属性的注入
2011-05-06 21:36 1180在以前的SPRING中我们通常采用的方式是在XML文件来来实现 ... -
使用SPRING的IOC的好处
2011-03-01 00:06 1783IOC:控制反转,它是不 ...
相关推荐
在Spring AOP中,有三种主要的通知类型:前置通知、后置通知和环绕通知。下面将详细解释这三种通知,并通过简单的代码示例进行演示。 **1. 前置通知(Before Advice)** 前置通知在目标方法被调用之前执行,但无法...
在这个例子中,我们将深入探讨Spring AOP中的前置通知、后置通知以及环绕通知的实现方式。 前置通知(Before Advice)在目标方法执行前触发,通常用于执行验证、初始化等操作。在Spring AOP中,我们可以使用`@...
本教程将深入探讨Spring AOP中的四种通知类型:前置通知、后置通知、环绕通知以及异常通知,并通过实际案例展示如何创建自定义切入点。 1. **前置通知**: 前置通知在目标方法执行前触发,通常用于执行验证或准备...
本篇主要探讨的是如何利用Spring AOP的注解来实现这些功能,包括前置通知、后置通知、返回通知和异常通知。 ### 前置通知(Before通知) 前置通知在目标方法执行之前运行。在Spring AOP中,我们使用`@Before`注解...
1、编写切面类,包含权限审核方法和日志记录方法,这两个方法将来会织入到...5、编写案例,运用Spring AOP技术,要求包含前置通知、后置通知、环绕通知、返回通知、异常返回通知。请掌握这五种通知的特点,及应用场景
本文将深入探讨Spring AOP中的前置通知和后置通知,以及它们在实际开发中的应用。 前置通知是指在目标方法执行之前执行的通知。在Spring AOP中,这通过`@Before`注解实现。这个注解用于定义一个切点表达式,匹配到...
在本主题中,我们将深入探讨Spring AOP的注解版,它是基于Java注解的实现,简化了配置并提高了代码的可读性。 首先,让我们理解AOP的基本概念。AOP是一种编程范式,允许程序员定义“切面”,这些切面封装了跨越多个...
要启用注解驱动的 AOP,需要在 Spring 配置文件中添加 `<aop:aspectj-autoproxy>` 标签,或者在 Java 配置类中使用 `@EnableAspectJAutoProxy` 注解。 6. **运行环境** 由于这是一个简单的例子,因此运行环境的...
我们可以使用`@Aspect`注解来定义一个切面类,`@Before`、`@After`、`@Around`、`@AfterReturning`和`@AfterThrowing`注解来定义不同类型的通知,它们分别对应于前置通知、后置通知、环绕通知、返回后通知和异常后...
Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是...在`myaop`项目中,你可以找到具体的示例代码,包括切面类、切入点表达式以及相应的注解使用,通过这些示例可以更深入地理解Spring AOP的注解配置。
`Spring的前置后置通知jar包`可能包含了一些预构建的AOP通知实现,例如日志库,它们可以方便地集成到Spring应用中,提供对方法执行前后的拦截能力。 总的来说,Spring的AOP机制提供了强大的灵活性,使得我们可以将...
通知是在特定连接点(join point)执行的代码,可以是前置通知、后置通知、异常通知、最终通知或环绕通知。使用`@Before`、`@After`、`@AfterReturning`、`@AfterThrowing`和`@Around`注解定义不同的通知,例如: `...
3. **通知类型**:Spring支持五种不同类型的通知:前置通知(Before)、后置通知(After)、返回后通知(After Returning)、异常后通知(After Throwing)和环绕通知(Around)。 4. **切点表达式**:切点表达式...
在Spring框架中,AOP通过代理实现,可以使用XML配置或注解进行配置。本篇文章主要聚焦于Spring AOP的XML配置通知。 **一、AOP概念解析** 1. **切面(Aspect)**:一个关注点的模块化,例如事务管理就是一个切面。...
通过这个"SpringAOP注解方式"的示例,你可以了解到如何在Spring中使用注解定义切面,编写通知,并配置切入点。这种方式大大简化了AOP的配置,使得代码更加模块化和易于维护。学习并掌握Spring AOP的注解使用,对于...
在Spring AOP中,注解配置是一种简洁且直观的使用方式,它极大地简化了配置过程,避免了XML配置的繁琐。以下是使用注解配置Spring AOP的关键知识点: 1. **切面(Aspect)**:切面是AOP的核心概念,它封装了多个...
**Spring AOP 配置实现详解** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它允许我们通过分离关注点来简化应用程序的开发。在传统的面向对象编程中,业务逻辑与日志记录...
3. **@Before**、**@After**、**@Around**、**@AfterReturning** 和 **@AfterThrowing**:这些是不同的通知类型,分别代表前置通知、后置通知、环绕通知、返回后通知和异常后通知。例如,我们可以使用`@Before`在...
Spring AOP支持五种类型的通知:前置通知(Before)、后置通知(After)、返回后通知(After Returning)、异常后通知(After Throwing)和环绕通知(Around)。 3. **切点(Pointcut)**:切点是程序执行过程中的...