- 浏览: 809226 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (307)
- struts (8)
- hibernate (3)
- spring (32)
- opensourceproject (12)
- javaScript (9)
- primeton EOS (2)
- journey of heart (10)
- Design pattern (6)
- ejb (17)
- point (37)
- Linux&Unix (22)
- ibatis (10)
- AJAX (6)
- DB (26)
- Protocol (6)
- chart (4)
- web server (11)
- webservice (7)
- integration (3)
- tuxedo (5)
- ext (4)
- android (1)
- c/c++ (12)
- JVM (1)
- paginationFrame (2)
- code (2)
- report (1)
- High-performance web (1)
- svn (1)
- JQuery (1)
- workDaily (2)
- cloud (16)
- Python (8)
- English (2)
- shell (5)
- googleCode (1)
- nio (1)
- hyper-v (1)
- debug (3)
- vbs (2)
- openstack (3)
- K8S (1)
- Mesos (0)
- Spark (0)
- Marathon (0)
最新评论
-
钱图大展:
chao2751021 写道lib包哪里去下载,找不到
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
钱图大展:
无法下载
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
fm395728572:
shell脚本中用到了环境变量,但是获取不到,例如脚本中有一句 ...
ganymed-ssh2 for Java -
liuhanjiang:
我qq147229234
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
liuhanjiang:
博主 我利用您提供的方法实现博文中介绍的clickstream ...
大型网站用户行为记录的一个实现--基于clickStream(第一部分)
上一讲我们使用spring注解的方式理由aop技术实现了方法的拦截,下面我们多使用一点实例,仔细体验下spring2.5 这种技术:
以下所有代码依赖上一讲...
被拦截的业务bean
package cn.com.xinli.service.impl; import org.apache.log4j.Logger; import cn.com.xinli.service.PersionSevice; public class PersionServiceBean implements PersionSevice { Logger log=Logger.getLogger(PersionServiceBean.class); public String getPersonName(Integer personid) { System.out.println("我是getPersonName()方法"); return "xxx"; } public void save(String name) { System.out.println("我是save()方法"); //throw new RuntimeException("我是异常..."); } public void update(String name, Integer personid) { System.out.println("我是update()方法"); } }
1.得到例外通知
public void save(String name) { System.out.println("我是save()方法"); throw new RuntimeException("我是异常..."); }
结果: 注意 在异常发生的时候 后置通知 不会执行
前置通知
进入方法
我是save()方法
最终通知
例外通知:java.lang.RuntimeException: 我是异常...
2. 环绕通知分析:环绕通知的写法固定,入参也必须这么写,并且在方法里面一定要调用 pjp.proceed();
如果这个切面后面还有切面,则先执行后面的切面中的方法, 如果不调用这个方法,后面的切面将不能得到执行,并且
这个自身的切面 中拦截的业务方法也不能执行
//环绕通知,固定写法,可以实现上面的所有通知 @Around("anyMethod()") public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable { //if(){//判断用户是否在权限 System.out.println("进入方法"); Object result = pjp.proceed(); System.out.println("退出方法"); //} return result; }
3.在前置通知中得到方法的 输入参数 ,注解的意思是前置通知执行的条件是 业务方法中只有一个输入参数,并且参数的类型是 String ,我们在 测试用例中 ps.save("huxl") 将得到 前置通知hxl, 执行其他的业务方法,则不会被前置方法拦截到.
@Before("anyMethod() && args(name)") public void doAccessCheck(String name) { System.out.println("前置通知"+name); }
4.在后置通知中得到业务方法的返回结果 调用 ps.getPersonName(1); 则得到 后置通知:xxx
/*在业务方法执行完毕后,后置通知拿到业务的返回值*/ @AfterReturning(pointcut="anyMethod()",returning="result") public void doAfterReturning(String result) { System.out.println("后置通知:"+result); }
5.在业务方法抛出异常的时候得到在例外通知中得到例外
@AfterThrowing(pointcut="anyMethod()",throwing="e") public void doAfterThrowing(Exception e) { System.out.println("例外通知:"+ e); }
发表评论
-
hibernatetemplate类使用
2010-03-19 22:25 1205http://115893520.iteye.com/blog ... -
Spring 中的JdbcTemplate使用
2010-03-19 22:11 35101.JdbcTemplate的execute()方 ... -
SpringAOP 的使用(两种方式)
2009-10-22 13:42 1526使用Spring AOP 拦截 方法,给被拦截的 ... -
第30讲--Spring提供的CharacterEncoding和OpenSessionInView功能
2009-09-19 18:24 1798CharacterEncoding: 在web ... -
第29讲--为Spring集成的Hibernate配置二级缓存
2009-09-18 00:29 3404合理的使用缓存策略,往往在web开发中提高性能起到关键 ... -
第28讲--Struts与Spring集成方案2(Spring集成Struts)
2009-09-17 00:57 1648集成步骤: 1.和方案1一样需要在web. ... -
第27讲--Struts与Spring集成方案1(Struts集成Spring)
2009-09-16 08:25 1834Spring2.5+Hibernate3.3+Stru ... -
第25,26讲 --搭建和配置Spring与Hibernate整合的环境
2009-06-21 11:21 1611Spring2.5+Hibernate3.3+Stru ... -
第24讲 --使用Spring配置文件实现事务管理
2009-06-20 23:56 1773采用基于XML方式配置事务 <bean ... -
第23讲 --使用Spring注解方式管理事务与传播行为详解
2009-06-11 23:19 2253事务传播属性 REQUIR ... -
第21,22讲 --搭建和配置Spring与jdbc整合的环境+Spring集成的jdbc编码和事务
2009-06-10 08:06 2702Spring+JDBC组合开发配置数据源有两种方式: ... -
第20讲--aspectj的切入点语法定义细节
2009-06-06 17:47 3645表达式分析: expression=" ... -
第19讲 --使用Spring配置文件实现AOP
2009-06-06 17:21 1551上面我们是使用注解的方式实现spring AOP的,下面 ... -
第17讲 --使用Spring的注解方式实现AOP入门
2009-06-05 00:48 2277使用Spring进行面向切面(AOP)编程 要 ... -
第16讲 --使用CGLIB实现AOP功能与AOP概念解释
2009-06-04 07:42 1642当代理对象没有实现 ... -
第15讲 --使用JDK中的Proxy技术实现AOP功能
2009-06-04 07:34 2338当目标类实现了接口,我们可以使用jdk的Proxy ... -
第14讲 --让Spring自动扫描和管理Bean
2009-06-02 23:40 8757通过在classpath自动扫描方式把组件纳入sp ... -
第13讲 --Autowire注解与自动装配
2009-06-02 22:46 31401. Autowire 默认是 ... -
第12讲 --编码剖析@Resource注解的实现原理
2009-06-01 23:14 3297在这一讲开始之前,我们先学习一下jdk5.0 中的一个新 ... -
第11讲 --用@Resource注解完成属性装配
2009-05-31 22:42 7046bean的注入方式有3种: 第一种:使用构造器注 ...
相关推荐
6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.7. 编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1....
Spring AOP API 设计与实现是Spring框架的重要组成部分,它提供了面向切面编程的能力,使得开发者可以在不修改源代码的情况下,对程序进行横切关注点的处理,如日志记录、事务管理等。本章主要涵盖了Spring AOP的多...
其中,Spring 提供了多种方式来处理 web 请求,例如使用 @RestController 注解或使用 Spring MVC 框架。 4. Spring Boot Spring Boot 是 Spring 框架的子项目,提供了一个快速构建生产级别应用程序的方式。Spring ...
Spring AOP的实现有两种方式:代理模式和注解驱动。代理模式分为JDK动态代理和CGLIB代理,前者针对接口,后者针对类。注解驱动则更便于使用,通过在方法上添加如`@Before`、`@After`等注解,可以直接定义通知。 ...
Spring Boot实战与原理分析视频课程包含14-18,本视频教程为网络整理,如有侵权,请联系删除。谢谢 Spring Boot实战与原理分析视频课程 课程目录: 1 Spring Boot概述与课程概要介绍20:33 2 Spring4 快速入门59:56...
在Spring框架中,JDBC模板(JdbcTemplate)是Spring对Java数据库连接(JDBC)API的一个强大封装,它简化了数据库操作,使开发者能够更专注于业务逻辑而不是底层的数据库交互细节。今天我们将深入探讨Spring的JDBC...
11. **第十一章:Spring Cloud** - 微服务概述:介绍微服务架构,以及Spring Cloud在其中的作用。 - Spring Cloud组件:了解Eureka、Zuul、Ribbon、Hystrix等核心组件的用法,构建微服务生态。 通过阅读《Spring...
#### 十八、Spring Web Flow 与 JSF(第18章) - **Spring Web Flow 简介**:介绍 Spring Web Flow 框架及其作用。 - **JSF 整合**:指导如何将 JSF 与 Spring Web Flow 进行整合。 - **流程管理**:讲解如何管理 ...
6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.7. 编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 ...
Spring的核心优势在于其灵活的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)的能力,这使得开发者能够更加关注业务逻辑而减少对底层框架细节的关注。 ##### 1.1 Spring的七...
- 第十一天资料:可能讲解了MyBatis的基本使用,如配置文件、映射文件和SqlSession的使用。 - 第十六天资料:可能深入到了SSM整合的实践,如何在Spring中配置SpringMVC和MyBatis,以及事务管理。 每个阶段的学习...
- **注解配置**:探讨了Spring注解驱动的配置方式,如@Component、@Service、@Repository等。 - **混合配置**:讨论如何结合XML配置和注解配置的方式,以及它们各自的优缺点。 #### 5. 引入Spring AOP - **AOP基础*...
#### 第十八章:Spring中定制事件 - **自定义事件:** - 可以创建自己的事件类,并通过ApplicationContext.publishEvent方法发布。 #### 第十九章:Spring框架的AOP - **AOP术语:** - 包括切面、连接点、通知等...
第十二章探讨了如何使用Spring Security框架来保护Web应用程序的安全性。Spring Security是一个功能强大的安全框架,支持认证、授权以及其他高级安全功能。本章详细介绍了如何配置Spring Security来实现基于角色的...
#### 第十课:Spring 整合 Hibernate - **配置 SessionFactory**: - **XML 形式**:使用 `<bean>` 标签来配置 Hibernate 的 `SessionFactory`。 - **Annotation 方式**:通过注解来配置 `SessionFactory`。 - **...
- **Spring AOP vs AspectJ**:Spring框架内建的AOP易于理解和使用,对于大部分场景足够。但若需要更复杂、更强大的AOP功能,可以集成AspectJ,它是Java领域最成熟、功能最全的AOP实现。 4. **其他核心技术**:...
2. **AOP(面向切面编程)**:Spring提供了一种实现切面编程的机制,允许开发者定义“切面”,并在适当的时候自动插入到代码中,用于日志记录、事务管理等。 3. **数据访问/集成**:Spring提供了对各种持久化技术的...
Spring的AOP模块支持在运行时创建动态代理,实现方法拦截,用于日志记录、事务管理、性能监控等。切面可以定义通知(advice)、切点(pointcut)和织入(weaving)等概念,增强了代码的模块化和解耦。 三、Bean的...
- **Spring AOP与AspectJ集成**:虽然Spring AOP功能强大,但更复杂的场景可能需要使用AspectJ,它是Java领域最成熟、最全面的AOP实现。Spring支持与AspectJ的集成,提供编译时和运行时的AOP代理。 4. **其他核心...