- 浏览: 1356567 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (453)
- Struts2 (4)
- Struts1 (16)
- Spring (9)
- Hibernate (5)
- AJAX (16)
- MS Server (9)
- Oracle (35)
- 测试技术 (5)
- 其他 (37)
- JSF (1)
- EJB (5)
- ASP.NET (9)
- iBATIS (5)
- Struts Spring Hibernate (2)
- HTML (12)
- Eclipse使用 (5)
- 设计模式 (5)
- JSP (32)
- 正则表达式 (2)
- 服务器 (12)
- Java基础 (48)
- MySQL (4)
- 面试 (22)
- UML (1)
- 数据结构 (3)
- Ant (2)
- 规范 (4)
- JavaScript (29)
- 软件使用及技巧 (25)
- PHP (1)
- DWR (3)
- FreeMarker (1)
- ExtJs (17)
- JFreeChart (9)
- Reports (2)
- JavaException (1)
- Java Mail (1)
- Flex (9)
- 异常 (12)
- Log4j (2)
- WebService (1)
- jQuery (1)
- Sybase (2)
- myeclipse_plugin (2)
- Linux (5)
- jbpm (2)
- SCM (1)
- mongoDB (1)
最新评论
-
lihua2008love:
<typeAlias alias="User& ...
IBATIS简单操作 -
lihua2008love:
...
关于项目框架设计的一点学习 -
c_jinglin:
我使用<OBJECT CLASSID="cls ...
这就是个静态页面通过js控制mscomm对某com设备进行访问的例子. -
zlbjava:
赞,用了还不错
java获取请求的ip地址,并解析ip所属地区 -
完美天龙:
cs842813290 写道楼主,我明白的地方:在链表已有N个 ...
JAVA实现双向链表
我们开发网站的过程中,经常会碰到这种情况,当调用某个类中函数的时候,需要记录一些东西或触发某些事件,如何来实现呢?如当缓存中的对象不是最新时,需及时更新缓存对象,当调用某些类的某些方法时,需要记录某些日志信息等,这种应用无处不在,我们如何实现他,利用Spring框架的AOP为例,记录一下他的实现方法
在applicationContext.xml 配置文件中加入类似如下配置信息
两个类的源码如下
测试代码
在我程序的任何地方调用IGroupService的listGroup时,都会自动执行commonAdvise中的代码,打印信息如下:
这种方式绝对是代码零侵入性,推荐大家使用。
在applicationContext.xml 配置文件中加入类似如下配置信息
<bean id="commonAdvise" class="cn.hj.advise.CommonAdvise"></bean> <bean id="commonProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="target"> <ref bean="groupService" /> </property> <property name="proxyInterfaces"> <value>cn.hj.service.IGroupService</value> </property> <property name="interceptorNames"> <list> <value>commonAdvise</value> </list> </property> </bean>
两个类的源码如下
public class CommonAdvise implements AfterReturningAdvice{ private GroupService groupService; public GroupService getGroupService() { return groupService; } public void setGroupService(GroupService groupService) { this.groupService = groupService; } public void afterReturning(Object returnValue, Method method, Object[] target_arg, Object target) throws Throwable { System.out.println("==========================="); System.out.println("目标方法返回值:"+returnValue+",目标方法:"+method+",目标对象:"+target+"目标方法参数列表:\n"); if(target_arg!=null){ for(int i=0;i<target_arg.length;i++){ System.out.println("Object["+i+"]:"+target_arg[i]); } } System.out.println("==========================="); } }
public interface IGroupService { public void addGroup(Group group); public void delGroup(Group group); public void modGroup(Group group); public Group findGroup(String groupid); public List listGroup(); }
测试代码
在我程序的任何地方调用IGroupService的listGroup时,都会自动执行commonAdvise中的代码,打印信息如下:
=========================== 目标方法返回值:[cn.hj.model.Group@1bb205a, cn.hj.model.Group@48fbc0, cn.hj.model.Group@18837f1] 目标方法:public abstract java.util.List cn.hj.service.IGroupService.listGroup() 目标对象:cn.hj.service.GroupService@10f0a0 目标方法参数列表: ===========================
这种方式绝对是代码零侵入性,推荐大家使用。
发表评论
-
java获取请求的ip地址,并解析ip所属地区
2009-06-01 09:05 9089每次看见QQ上面能够显示对方的ip和地址让人觉得舒服。。刚刚无 ... -
jsp是上传图片加水印
2009-05-05 14:46 1540参考附件. -
JSP 中路径相关的常用解决办法
2009-04-22 15:58 1937<%@ page language="ja ... -
Jsp页面弹出输入对话框的实现收藏
2009-01-16 16:48 4006在写JSP页面的时候,有时需要点击一个按钮弹出一个输入对话框, ... -
log4j xml配置详解
2008-12-30 08:07 15572<?xml version="1.0" ... -
一个关于java.net.Socket的超时的问题
2008-12-26 10:44 5041从异常信息中,可以看到是read timed out,应该是S ... -
防止刷新带来的重复提交
2008-10-08 14:17 1534------------------------------- ... -
防止盗链
2008-09-04 22:28 1584<%=request.getHeader("R ... -
ip 验证
2008-08-31 23:38 1230if(kk_BlacklistVehicle_UserEnro ... -
用户登陆 封装
2008-08-31 23:37 1195首先要有一个封装类,我用UserInfo package d ... -
加密算法SHA-1,SHA-256,SHA-512,MD2,MD5
2008-08-31 23:33 6194自定义某种算法 package test; ... -
Java 调用 Oracle 存储过程返回结果集
2008-08-12 08:16 2598Oracle 存储过程返回结果集用 ref cursor 实现 ... -
分页技术
2008-07-19 11:33 1417在使用数据库的过程中,不可避免的需要使用到分页的功能,可是JD ... -
对分页的封装
2008-07-16 19:59 1887package com.bjsxt.oa.web; im ... -
Pagger-taglib分页
2008-07-16 17:57 1424<%@ page language="java ... -
JavaScirpt和JSP数据数据交互使用问题
2008-07-03 21:53 1510一、页面中的JavaScript的数据如何提交给后台的jsp程 ... -
用Cookie实现的购物车
2008-07-02 23:17 8313Cusorderitem.java 封装了相关的商品购买信息 ... -
Servlet中文API文档
2008-06-30 14:08 4163基本类和接口 一、javax. ... -
控制 Web 缓存
2008-06-19 21:11 1295控制 Web 缓存 假设两个并发用户(用户 A 和用户 ... -
JSP tag 学习
2008-05-19 20:16 2746在JSP2.0 中,对于自定义的标签有两种实现方法,实现接口或 ...
相关推荐
监控视频遥控器嵌入式软件是现代视频监控系统的核心组成部分,尤其在安全保卫、生产和试验过程中发挥着重要作用。...总的来说,监控视频遥控器嵌入式软件为构建高效、安全、灵活的监控网络提供了全面的解决方案。
Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,日期选择 Java语言开发的简洁实用的日期选择控件,源码文件功能说明: [DateChooser.java] Java 日期选择控件(主体类) [public] ...
1. **基于POJO的轻量级和最小侵入性编程**:Spring鼓励使用简单的Java对象(POJOs)而不是复杂的JavaEE组件,这使得代码更易于理解和维护。 2. **依赖注入(DI)和面向接口编程实现松耦合**:通过依赖注入,对象间...
【电子政务网站安全防护解决方案】 随着信息技术的飞速发展,电子政务网站已成为政府与公众交流的重要平台,提供了网上办公和办事服务。然而,随着网站功能的复杂化,信息安全问题也日益凸显。政府门户网站的安全...
在J2EE应用程序开发中,设计模式是一种经过验证的、重用的解决方案,用于解决常见的问题,以提高代码质量和可维护性。"J2EE设计模式精解"着重讨论了如何利用这些模式来构建健壮的、可扩展的Web应用程序。在给定的...
- **背景**:SpringSource 是 Spring 框架背后的公司,专注于提供基于 Spring 的企业级解决方案和服务。 - **贡献**:不仅维护和发展 Spring 框架本身,还提供了许多工具和产品来支持 Spring 的应用开发。 - **...
1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...
- 开放性:提供协议模板管理接口,便于积累和快速构建不同领域应用层协议的测试解决方案。 - 监控灵活性:丰富的测试仪表和协议字段绑定方式,支持双向绑定和表达式绑定。 - 多层次支持:兼顾初级至高级测试人员...
2. **面向切面编程(Aspect-Oriented Programming,AOP)**:Spring的AOP模块提供了声明式事务管理、日志记录、性能监控等跨切面关注点的解决方案。AOP允许将这些通用功能抽取出来,作为独立的模块进行处理,降低了...
1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...
1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...
6. **Spring Security**:Spring的安全模块提供了一套完整的安全解决方案,包括身份验证、授权、CSRF防护等,为Web应用提供了强大的安全保障。 7. **Test Support**:Spring的测试框架支持单元测试和集成测试,提供...
- **PHP**:一种通用开源脚本语言,特别适合用于Web开发。 - **JSP**:Java Server Pages,一种基于Java技术的服务器端脚本环境。 ### 11. WWW的工作原理 - **知识点概述**:WWW是一种基于超文本方式查询文件信息...
嵌入式测试系统软件测试平台是一种专为解决嵌入式软件、Web应用、移动APP以及桌面软件测试难题而设计的自动化测试解决方案。该平台通过业务流程建模,能够自动生成满足路径覆盖要求的测试用例,并创建自动化测试脚本...
1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...
1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...
1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...
1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. ...