- 浏览: 707227 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (260)
- web 开发 (44)
- struts (14)
- java (39)
- 我的感受 (2)
- ajax (2)
- spring (22)
- Hibernate (4)
- struts2 (1)
- java 面试题 (1)
- 英语 学习类 (2)
- jdk1.6特性 (1)
- extjs (13)
- oracle (3)
- JQuery (3)
- ┠ 『Spring 3.0』 ┨ (1)
- 『LOG4J』 (2)
- 『常用数据』 (1)
- JavaMail (0)
- 〓『 EJB3.0 』〓 (0)
- HTML5 (5)
- Canvas (0)
- spring2.5 (0)
- HPH 5 (1)
- C# .net (0)
- UML (1)
- REST (2)
- JS_validate (1)
- 项目管理文章 (1)
- 闲聊闲记 (12)
- SQL-SQL (3)
- javascript (18)
- js (4)
- linux (8)
- 电子政务 (1)
- 项目对象模型 (1)
- 系统集成项目管理 (1)
- shell (2)
- mysql (1)
- solr (5)
- cxf;services (2)
- 11 (0)
- 缓存 (1)
- cached (3)
- 单片机通信 (1)
- cached;oscache (1)
- android (15)
- android;蓝牙 (1)
- Lucene (5)
- TTS (1)
- 网络爬虫 (1)
- HtmlCleaner (1)
- iPhone (2)
- 有感而发 (1)
- Python (0)
- jetty (1)
- Redis (1)
- hadoop (1)
- socket (1)
- 色彩顾问 (1)
- javaapns (1)
- bat (1)
- object-c (4)
- ios (4)
- C-学习 (1)
- 搜索 (1)
- c# (1)
最新评论
-
annie211:
Angularjs构建一个CRUD应用可能用到的全部内容包括:数据绑定、基本模板标识符、表单验证、路由、深度链接、组件重用、依赖注入 -
潇寒听竹:
你好,请问您上传的那个APK为什么每次只能识别一次,不能连续识 ...
pocketsphinxAdroid离线语音识别---入门 -
ichenwenjin:
Angularjs构建一个CRUD应用可能用到的全部内容包括:数据绑定、基本模板标识符、表单验证、路由、深度链接、组件重用、依赖注入 -
NN_iaoiao:
问一下 你的这个People 类 是自定义的还是android ...
android 获取电话本中的联系人列表 -
wangzhe_real:
对于刚接触的我是一个很详细的教程,太感谢了
JAX-RS cxf web服务 rest简单增删改查 集成spring webService
(1)前置通知
接口:org.springframework.aop.MethodBeforeAdvice
使用前置通知可以在联结点执行前进行自定义的操作。不过,Spring里只有一种联结点,即方法调用,所以前置通知事实上就是让你能在方法调用前进行一些操作。前置通知可以访问调用的目标方法,也可以对该方法的参数进行操作,不过它不能影响方法调用本身。
示例:
IHello接口
public interface IHello { public void hello(String name); } |
IHello接口实现
public class HelloSpeaker implements IHello { public void hello(String name) { System.out.println("Hello, " + name); } } |
IHello实现代理
public class LogBeforeAdvice implements MethodBeforeAdvice { private Logger logger = Logger.getLogger(this.getClass().getName());
public void before(Method method, Object[] args, Object target) throws Throwable { logger.log(Level.INFO, "method starts..." + method); } } |
Spring配置文件
<bean id="logBeforeAdvice" class="onlyfun.caterpillar.LogBeforeAdvice"/>
<bean id="helloSpeaker" class="onlyfun.caterpillar.HelloSpeaker"/>
<bean id="helloProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>onlyfun.caterpillar.IHello</value> </property> <property name="target"> <ref bean="helloSpeaker"/> </property> <property name="interceptorNames"> <list> <value>logBeforeAdvice</value> </list> </property> </bean> |
测试类
public class SpringAOPDemo { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext( "beans-config.xml"); IHello helloProxy = (IHello) context.getBean("helloProxy"); helloProxy.hello("Justin"); } } |
(2)后置通知(或返回后通知)
接口:org.springframework.aop.AfterReturningAdvice
后置通知在联结点处的方法调用已经完成,并且已经返回一个值时运行,后置通知可以访问调用的目标方法,以及该方法的参数和返回值。因为等到通知执行时该方法已经调用,后置通知完全不能影响方法调用本身。
示例:
IHello接口
public interface IHello { public void hello(String name); } |
IHello接口实现
public class HelloSpeaker implements IHello { public void hello(String name) { System.out.println("Hello, " + name); } } |
IHello实现代理
public class LogAfterAdvice implements AfterReturningAdvice { private Logger logger = Logger.getLogger(this.getClass().getName());
public void afterReturning(Object object, Method method, Object[] args, Object target) throws Throwable { logger.log(Level.INFO, "method ends..." + method); } } |
Spring配置文件
<bean id="logAfterAdvice" class="onlyfun.caterpillar.LogAfterAdvice"/>
<bean id="helloSpeaker" class="onlyfun.caterpillar.HelloSpeaker"/>
<bean id="helloProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>onlyfun.caterpillar.IHello</value> </property> <property name="target"> <ref bean="helloSpeaker"/> </property> <property name="interceptorNames"> <list> <value>logAfterAdvice</value> </list> </property> </bean> |
测试类
public class SpringAOPDemo { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext( "beans-config.xml"); IHello helloProxy = (IHello) context.getBean("helloProxy"); helloProxy.hello("Justin"); } } |
(3)包围通知
接口:org.aopalliance.intercept.MethodInterceptor
Spring中的包围通知模AOP联盟的“方法拦截器”标准。包围通知可以在目标方法之前和之后动行,我们也可以定义在什么时候调用目标方法。如果需要,我们也可以另写自己的逻辑而完全不调用目标方法。
示例:
IHello接口
public interface IHello { public void hello(String name); } |
IHello接口实现
public class HelloSpeaker implements IHello { public void hello(String name) { System.out.println("Hello, " + name); } } |
IHello实现代理
public class LogInterceptor implements MethodInterceptor { private Logger logger = Logger.getLogger(this.getClass().getName());
public Object invoke(MethodInvocation methodInvocation) throws Throwable { logger.log(Level.INFO, "method starts..." + methodInvocation.getMethod());
Object result = null; try { result = methodInvocation.proceed(); } finally { logger.log(Level.INFO, "method ends..." + methodInvocation.getMethod() + "\n"); } return result; } |
Spring配置文件
<bean id="logInterceptor" class="onlyfun.caterpillar.LogInterceptor"/>
<bean id="helloSpeaker" class="onlyfun.caterpillar.HelloSpeaker"/>
<bean id="helloProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>onlyfun.caterpillar.IHello</value> </property> <property name="target"> <ref bean="helloSpeaker"/> </property> <property name="interceptorNames"> <list> <value>logInterceptor</value> </list> </property> </bean> |
测试类
public class SpringAOPDemo { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext( "beans-config.xml"); IHello helloProxy = (IHello) context.getBean("helloProxy"); helloProxy.hello("Justin"); } |
发表评论
-
Java 数据验证
2017-05-12 10:27 1102在web开发当前就会遇到一些数据有效性验证的相关代码编 ... -
spring mvc rest 小例子
2012-05-24 15:35 1839http://localhost:8080/mainrest/ ... -
JAX-RS cxf web服务 rest简单增删改查 集成spring webService
2011-09-14 14:35 5762没时间什么也不多说了。所有的话都在代码里。 ... -
aop svn
2010-11-30 08:31 1017aop http://student.csdn.net/sp ... -
spring 2.5 mvc 注解 ajax 实现
2010-03-07 19:30 4262spring 2.5 的mvc 大量的使用了注解,减少了xml ... -
spring 2.5 注释驱动的IOC功能
2010-03-04 04:18 1565spring 注释功相当于 以前在spring的配置文件的b ... -
spring 2.0_MVC+Ibatis web 实例
2010-03-04 01:50 2592这个便子是我在面试之后回来做的, 前段时间不久,我去面 ... -
spring 2.0 配置文 件头
2010-02-28 00:02 129<?xml version="1.0" ... -
Spring Jar包详解
2010-01-28 13:35 1314摘自:http://vc88.iteye.com/ ... -
spring配置事务
2010-01-27 17:38 1980<?xml version="1.0" ... -
SSH(Spring+Struts+Hibernate)综合应用
2009-08-04 23:56 1509(1)Struts与Spring整合 <1> 在 ... -
spring 事务管理
2009-08-04 23:31 1666对于J2EE 应用程序而言,事务的处理一般有两种模式: ... -
在Spring应用中使用Hibernate
2009-08-04 11:56 1040<1>Spring in Hibernate示例 ... -
JDBC操作的Java对象化
2009-08-03 23:41 133org.springframework.jdbc.object ... -
基于Spring的数据访问
2009-08-03 22:52 1084(1)在Spring应用中使用JDBC Spring对JDB ... -
Spring的体系结构
2009-08-03 16:42 3856Spring 框架是一个分层架 ... -
Spring bean的封装机制
2009-08-03 16:31 1744Spring 从核心而言,是一个DI 容器,其设计哲学是提供一 ... -
spring 中 Bean继承
2009-08-03 16:29 2037某些情况下,你也许需要定义多个实现了共用接口的相同类型的bea ... -
spring 中自动装配你的Bean
2009-08-03 16:27 1882如果你不喜欢自己将你的程序装配起来,你可以尝试让Spring自 ... -
spring 注入参数(Injection Parameters)
2009-08-03 16:25 3047(1)简单的值注入 将简单的值注入到beans里面是很简单的 ...
相关推荐
在Java开发领域,Spring框架是不可或缺的一部分,它提供了一种强大的方式来管理应用程序的组件,实现依赖注入(IOC),面向切面编程(AOP),以及事务管理等核心功能。本篇将详细介绍标题“使用spring环境常用jar”...
标题 "spring最常用jar包" 暗示了我们讨论的核心是Spring框架中不可或缺的库文件,这些jar包是开发人员在使用Spring进行Java应用程序开发时最常引用的基础组件。Spring是一个开源的Java平台,它提供了全面的企业级...
在IT领域,Spring框架是Java开发中的重要组成部分,特别是其AOP(面向切面编程)模块,它允许开发者实现横切关注点,如日志、事务管理等,从而提高代码的可读性和可维护性。本篇文章将深入探讨Spring AOP的四种常见...
在这个"spring3.1.1常用jar包"中,包含了一系列核心的Spring库,这些库是搭建基于Spring的应用程序所必需的。 1. **Spring Core**:这是Spring框架的基础,提供了依赖注入(DI)和面向切面编程(AOP)的核心功能。...
Spring框架是Java开发中最常用的轻量级框架之一,它的核心在于IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。在本压缩包中,你可能会找到一系列与Spring相关的jar包,...
在"Spring实现AOP的四种方式.txt"文件中,你可以找到关于这些实现方式的详细代码示例。而"TestSpringAOP"可能是包含测试代码的类,用于验证和调试上述AOP实现。通过阅读和实践这些代码,将加深你对Spring AOP的理解...
在"spring常用jar包"中,包含了Spring框架的核心组件和其他相关依赖,这些jar包构成了Spring生态的基础。下面我们将详细探讨这些jar包及其在开发中的作用。 1. **spring-core.jar**:这是Spring框架的核心模块,...
Spring框架是Java开发中最常用的轻量级框架之一,以其强大的功能和灵活性深受开发者喜爱。本教程将基于提供的两本PDF文档——"Spring 2.0 中文用户指南"和"SpringGuide",来深入探讨Spring的核心概念和技术。 一、...
首先,Spring框架是Java开发中最常用的轻量级框架之一,它提供了一种模块化和简化应用程序开发的方式。它包括依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问/对象关系映射(ORM)等多个核心特性。 AOP是...
以下是对Spring常用包的详细解析: 1. **spring-core**:这是Spring框架的基础,包含了核心工具类和资源处理。其中,BeanUtils、ClassUtils等工具类提供了通用的Java对象操作,Resource接口则用于处理各种类型的...
下面将详细解释Spring框架中切入点表达式的常用写法。 1. **execution()指示符**: - `execution()`是Spring中最常用的切入点指示符,用于匹配方法执行。 - 语法结构:`execution(modifiers-pattern? ret-type-...
在IT行业中,Spring、Mybatis和Springboot是Java开发者必备的三大框架,它们在实际开发中的应用广泛且深入。这份名为"Spring、Mybatis、Springboot常用面试试题及答案.rar"的压缩包文件,显然是为准备面试的Java...
6. 在 Spring 框架中,AOP 中的通知类型包括前置通知、后置通知、异常通知等。环绕通知的目标对象需要实现的接口是 MethodInterceptor。 7. AOP 将软件系统分为两个部分:切面和业务处理。AOP 是一种设计模式,...
- **如何加入 Zuul**:Zuul 是 Spring Cloud 中的一个常用的 API 网关组件,用于路由和过滤请求。 - **嵌入式 Zuul 反向代理**:Zuul 可以作为反向代理服务器,将请求转发给后端服务。 - **Zuul Http 客户端**:Zuul...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
这个“spring 2.5 jar常用包”包含的可能是Spring框架2.5版本的核心库和其他相关依赖,如Spring MVC、Spring ORM、Spring AOP等。这些jar包可以用于构建基于Spring 2.5的应用,确保所有必需的类库都已包含,简化了...
在这个“spring教学—常用的知识”中,我们可以期待学习到一系列关于Spring的重要概念和技术。 首先,Spring的核心特性之一是依赖注入。依赖注入允许我们解耦代码,使得组件之间通过接口进行通信,而不是硬编码依赖...
在Spring中,AOP可以通过代理实现,有JDK动态代理和CGLIB两种方式。JDK动态代理适用于实现了接口的类,而CGLIB则可以代理任何类。例如,以下代码定义了一个简单的切面: ```java @Aspect @Component public class ...
Spring框架是Java开发中最常用的轻量级框架之一,它的核心特性包括依赖注入(IOC)、面向切面编程(AOP)以及Web应用的Model-View-Controller(MVC)架构支持。此外,Spring还提供了对JSON数据处理的支持,使得与...
Spring框架是Java应用程序开发中的一个核心组件,尤其在企业级应用和微服务架构中广泛应用。它提供了一种声明式编程模型,简化了依赖注入、事务管理、AOP(面向切面编程)等复杂任务。本汇总将深入探讨Spring开发中...