- 浏览: 772167 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (208)
- Java (77)
- JavaScript (16)
- UML (1)
- Spring (24)
- Hibernate (11)
- J2EE部署 (18)
- 操作系统 (13)
- struts (11)
- jsp (3)
- J2EE (34)
- 数据库 (22)
- tomcat (4)
- apache (2)
- MyEclipse (13)
- Linux (14)
- Ext (6)
- Weblogic (2)
- 数据库 Oracle 空表导出 (1)
- Oracle (3)
- 编码 乱码 (1)
- 多线程 (5)
- jQuery (2)
- Apache Mina (1)
- ibatis (6)
- abator (1)
- svn (1)
- jvm (1)
- ERwin (2)
- mysql (2)
- ant (1)
- memcache (1)
- dubbo (1)
- PowerDesigner (1)
最新评论
-
di1984HIT:
Shallow heap & Retained heap -
tinguo002:
非常感谢 , 太棒了。
Spring注解方式,异常 'sessionFactory' or 'hibernateTemplate' is required的解决方法 -
白天看黑夜:
Apache Mina Server 2.0 中文参考手册(带 ...
Apache Mina – 简单的客户端/服务端应用示例 -
wumingxingzhe:
好文
Shallow heap & Retained heap -
di1984HIT:
学习了!!
工作流(Workflow)和BPM的不同
1.AOP及Spring AOP背景知识
Spring AOP由100% java开发完成,秉承java的一切优势。
目前,Spring AOP只实现了方法级的joinpoint,有些AOP实现支持域级的joinpoint,比如JBoss AOP、AspectJ。joinpoint(连接点模型)是指AOP Aspect能够在应用系统中执行的地方,比如某个方法调用之前、修改某个域之前。连接点模型的强弱在很大程度上决定了AOP实现功能的强弱。
尽管Spring也能够用于J2SE、J2ME应用,但主要是在J2EE应用中使用它(Spring team推荐如此)。在J2EE应用中,AOP能够拦截到方法集的操作已经足够了。再者,OOP倡导的是通过setter/getter方法访问域,而不是直接访问域。因此目前Spring仅提供方法级的joinpoint是恰当的。
借助于Spring AOP,Spring Ioc能方便的使用到非常健壮、灵活的企业级服务。Spring AOP能够提供如下几方面的优势:
1)允许开发者使用声明式企业级服务,比如事务服务、安全性服务。
2)开发者可以开发满足业务需求的自定义方面。如果标准的J2EE安全性不满足业务需求,则必须开发拦截器。
3)开发Spring AOP Advice很方便。因为这些AOP Advice仅仅是POJO类,借助于Spring提供的ProxyFactoryBean,能够快速搭建Spring AOP Advice。
为开发AOP使能应用,需要开发AOP Advice,这是AOP开发的主要内容。因为advice中包含了AOP aspect的主要逻辑。
将AOP中的advice约定为“装备”。通常存在如下5种装备(Advice)类型:
1)Before装备:在执行目标操作之前执行的装备;
2)Throws装备:如果目标操作在执行过程中抛出异常,则执行此装备;
3)After装备:在执行目标操作之后执行的操作;
4)Around装备:在方法调用前后执行的装备;功能强大,灵活性也最好,能够在执行目标操作前后执行,因此这对于一些需要做资源初始化和释放资源的操作的应用而言,特别有用。
5)Introduction装备:由于Introduction装备能为类新增方法,因此在5中装备中,它最复杂,最难掌握。
借助于上述5种装备,基本能解决J2EE中的常见问题。
2.Spring AOP装备
对于Spring AOP而言,开发者会涉及到如下接口:
org.springframework.aop.MethodBeforeAdvice 用于实现Before装备;
org.springframework.aop.AfterReturningAdvice 用于实现After装备;
org.springframework.aop.ThrowsAdvice 用于实现Throws装备;
借助于RegexpMethodPointcutAdvisor类实现了对LoggingBeforeAdvice(此类为精通Spring源代码中example5中的类,实现了MethodBeforeAdvice接口,实现了其他装备接口的类集成方法类似)装备的集成,完成了pointcut和拦截器的定义。
Spring AOP由纯Java开发,开发者不需要对配置了装备的任何类进行编译工作。由于Spring AOP没有采用控制类装载器的方式来实现AOP,因此Spring AOP能使用与任何web容器应用服务器中,比如tomcat和Jboss。对于代理java接口的场景,Spring默认是采用动态代理实现的;对于代理java类的场景,Spring使用了动态字节码生成技术。
使用Spring AOP实现的各种装备类型时,ProxyFactoryBean起了很重要的作用(位于appcontext.xml)。
同其他Spring FactoryBean实现一样,ProxyFactoryBean也引入了间接层。需注意,通过名字或者id(比如,“helloworldbean”)获得的引用对象并不是ProxyFactoryBean实例本身,而是ProxyFactoryBean中getObject()方法实现返回的对象。其中,getObject方法将创建AOP代理,并将目标对象包裹(wrapper)在其中。代码示例:
配置文件中的内容为:
开发者也可以借助于Spring AOP手工创建AOP代理。因此,这将不会依赖于Spring Ioc容器,而只是Spring AOP本身。不过不推荐这么使用,它不符合Spring框架的初衷。
Spring开发框架Team推荐:借助于Spring Ioc框架自动创建AOP代理,并将有关AOP代理的java代码通过Spring配置文件配置。
另外,FactoryBean在Spring框架中起了很重要的作用。ProxyFactoryBean实现了FactoryBean接口,借助于ProxyFactoryBean的强大功能,开发者能够实现满足各种业务需求的实现。但这要求开发者去额外开发很多辅助业务操作的功能,比如事务、数据库连接等操作。因此,Spring框架针对具体方面提供了大量的实用类(注意,它们并不是继承于ProxyFactoryBean,而是实现了FactoryBean接口):
TransactionProxyFactoryBean,SimpleRemoteStatelessSessionProxyFactoryBean,RmiProxyFactoryBean,LocalStatelessSessionProxyFactoryBean
3.对象池
开发者在与数据库交互的过程中,通常会使用到连接池。它能够在应用实际使用数据库连接前,同目标RDBMS建立物理连接。Spring框架借助于Jakarta Commons Pool或者其他技术,提供有效的对象池实现。
Spring AOP由100% java开发完成,秉承java的一切优势。
目前,Spring AOP只实现了方法级的joinpoint,有些AOP实现支持域级的joinpoint,比如JBoss AOP、AspectJ。joinpoint(连接点模型)是指AOP Aspect能够在应用系统中执行的地方,比如某个方法调用之前、修改某个域之前。连接点模型的强弱在很大程度上决定了AOP实现功能的强弱。
尽管Spring也能够用于J2SE、J2ME应用,但主要是在J2EE应用中使用它(Spring team推荐如此)。在J2EE应用中,AOP能够拦截到方法集的操作已经足够了。再者,OOP倡导的是通过setter/getter方法访问域,而不是直接访问域。因此目前Spring仅提供方法级的joinpoint是恰当的。
借助于Spring AOP,Spring Ioc能方便的使用到非常健壮、灵活的企业级服务。Spring AOP能够提供如下几方面的优势:
1)允许开发者使用声明式企业级服务,比如事务服务、安全性服务。
2)开发者可以开发满足业务需求的自定义方面。如果标准的J2EE安全性不满足业务需求,则必须开发拦截器。
3)开发Spring AOP Advice很方便。因为这些AOP Advice仅仅是POJO类,借助于Spring提供的ProxyFactoryBean,能够快速搭建Spring AOP Advice。
为开发AOP使能应用,需要开发AOP Advice,这是AOP开发的主要内容。因为advice中包含了AOP aspect的主要逻辑。
将AOP中的advice约定为“装备”。通常存在如下5种装备(Advice)类型:
1)Before装备:在执行目标操作之前执行的装备;
2)Throws装备:如果目标操作在执行过程中抛出异常,则执行此装备;
3)After装备:在执行目标操作之后执行的操作;
4)Around装备:在方法调用前后执行的装备;功能强大,灵活性也最好,能够在执行目标操作前后执行,因此这对于一些需要做资源初始化和释放资源的操作的应用而言,特别有用。
5)Introduction装备:由于Introduction装备能为类新增方法,因此在5中装备中,它最复杂,最难掌握。
借助于上述5种装备,基本能解决J2EE中的常见问题。
2.Spring AOP装备
对于Spring AOP而言,开发者会涉及到如下接口:
org.springframework.aop.MethodBeforeAdvice 用于实现Before装备;
org.springframework.aop.AfterReturningAdvice 用于实现After装备;
org.springframework.aop.ThrowsAdvice 用于实现Throws装备;
借助于RegexpMethodPointcutAdvisor类实现了对LoggingBeforeAdvice(此类为精通Spring源代码中example5中的类,实现了MethodBeforeAdvice接口,实现了其他装备接口的类集成方法类似)装备的集成,完成了pointcut和拦截器的定义。
Spring AOP由纯Java开发,开发者不需要对配置了装备的任何类进行编译工作。由于Spring AOP没有采用控制类装载器的方式来实现AOP,因此Spring AOP能使用与任何web容器应用服务器中,比如tomcat和Jboss。对于代理java接口的场景,Spring默认是采用动态代理实现的;对于代理java类的场景,Spring使用了动态字节码生成技术。
使用Spring AOP实现的各种装备类型时,ProxyFactoryBean起了很重要的作用(位于appcontext.xml)。
同其他Spring FactoryBean实现一样,ProxyFactoryBean也引入了间接层。需注意,通过名字或者id(比如,“helloworldbean”)获得的引用对象并不是ProxyFactoryBean实例本身,而是ProxyFactoryBean中getObject()方法实现返回的对象。其中,getObject方法将创建AOP代理,并将目标对象包裹(wrapper)在其中。代码示例:
Resource resource = new ClassPathResource("appcontext.xml"); BeanFactory factory = new XmlBeanFactory(resource); IHelloWorld hw = (IHelloWorld) factory.getBean("helloworldbean");
配置文件中的内容为:
<bean id="helloworldbean" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>com.openv.spring.IHelloWorld</value> </property> <property name="target"> <ref local="helloworldbeanTarget"/> </property> <property name="interceptorNames"> <list> <value>loggingAfterAdvisor</value> </list> </property> </bean>
开发者也可以借助于Spring AOP手工创建AOP代理。因此,这将不会依赖于Spring Ioc容器,而只是Spring AOP本身。不过不推荐这么使用,它不符合Spring框架的初衷。
Spring开发框架Team推荐:借助于Spring Ioc框架自动创建AOP代理,并将有关AOP代理的java代码通过Spring配置文件配置。
另外,FactoryBean在Spring框架中起了很重要的作用。ProxyFactoryBean实现了FactoryBean接口,借助于ProxyFactoryBean的强大功能,开发者能够实现满足各种业务需求的实现。但这要求开发者去额外开发很多辅助业务操作的功能,比如事务、数据库连接等操作。因此,Spring框架针对具体方面提供了大量的实用类(注意,它们并不是继承于ProxyFactoryBean,而是实现了FactoryBean接口):
TransactionProxyFactoryBean,SimpleRemoteStatelessSessionProxyFactoryBean,RmiProxyFactoryBean,LocalStatelessSessionProxyFactoryBean
3.对象池
开发者在与数据库交互的过程中,通常会使用到连接池。它能够在应用实际使用数据库连接前,同目标RDBMS建立物理连接。Spring框架借助于Jakarta Commons Pool或者其他技术,提供有效的对象池实现。
发表评论
-
tomcat7可能带来的问题
2013-06-27 00:31 9831、struts标签校验更加严格,如果struts标签中存在嵌 ... -
Spring框架下获取Bean的几种方式
2011-11-03 00:06 4087通过xml配置文件 bean配置在xml里面,spri ... -
Activiti 5.6:子流程(subProcess)
2011-09-22 15:26 12711Activiti 5.6提供了子流程的实现,包括两种基于子流程 ... -
Activiti 5.6:配置与Spring整合
2011-09-21 13:00 11430Activiti 5.6与Spring整合也比较简单,其基本 ... -
Activiti 5.6安装配置
2011-09-21 11:38 5884安装配置Activiti 5.6还是比较容易的,在这里 ... -
Spring注解方式,异常 'sessionFactory' or 'hibernateTemplate' is required的解决方法
2011-09-01 23:08 18020启动工程时出现异常: Caused by: java.lang ... -
Spring 注解@Component,@Service,@Controller,@Repository
2011-09-01 21:02 1159Spring 2.5 中除了提供 @Component 注释外 ... -
使用 Spring 2.5 基于注解驱动的 Spring MVC
2012-02-29 15:54 1087转自:http://www.ibm.com/developer ... -
log4j.properties配置详解
2011-07-07 14:41 1114Log4J的配置文件(Configuration File)就 ... -
Spring注解详解
2011-01-04 01:02 1436基于注释(Annotation)的配置有越来越流行的趋 ... -
Spring2.x与Spring1.x的单例模式的配置区别
2010-03-11 17:49 2141在Spring1.x中配置单例的方法为: <bean i ... -
一个Web Project中无法打断点的原因
2010-02-28 10:59 1246新建一个标准的SSH工程:struts2,spring2,hi ... -
Spring管理struts中的action
2009-10-28 16:49 1130让Spring管理struts中的action,可以在stru ... -
Spring学习笔记(八)——Spring远程服务
2009-09-17 09:59 1213目前Spring提供的远程服务主要有: ◆RMI:借助于Spr ... -
Spring学习笔记(七)——Spring持久化服务 DAO JDBC ORM
2009-09-15 17:55 3536对于RDBMS相关的应用而 ... -
Spring学习笔记(六)——Spring消息服务-JMS
2009-09-10 16:19 2869JMS即java消息服务。在JMS中JMS消息并不同应用直接交 ... -
Spring学习笔记(五)——Spring事务服务-JTA
2009-09-08 17:47 5251Spring为事务管理提供一 ... -
Spring学习笔记(四)——Spring框架概述
2009-09-03 21:46 1070Spring框架的分成工作,即模块化,完成的非常好。 1 ... -
Spring学习笔记(二)——Spring Ioc反转控制
2009-09-01 16:49 3226Gof曾提出,针对接口编程,而不是实现。 通常情况下,开发者将 ... -
propertyConfigurer spring 引入多个属性文件
2009-08-31 11:23 5620<bean id="propertyConfi ...
相关推荐
本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...
在本篇“Spring.NET学习笔记16——事务管理Demo源码”中,我们将深入探讨Spring.NET的事务管理机制及其实际应用。 事务管理是软件开发中的关键部分,它确保数据库操作的一致性和完整性。Spring.NET通过其事务管理...
这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...
**Spring AOP 学习笔记及实现Demo** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP的主要目的...
Spring Aop 学习笔记
### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...
《Spring 学习笔记三——深入理解Spring框架》 在我们的Spring学习旅程中,这篇笔记将带领大家更深入地探讨Spring框架的核心特性及其工作原理。Spring作为Java开发中广泛使用的轻量级框架,其强大的功能和灵活性...
本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...
NULL 博文链接:https://linres.iteye.com/blog/281221
根据提供的压缩包文件名,我们可以推测这是一个逐步学习Spring的系列笔记。从"Spring_day1"开始,可能涵盖了Spring的基础概念、环境搭建和基本配置。"Spring_day2"可能涉及了依赖注入和AOP的深入讲解。"Spring_day3...
在本学习笔记中,我们将深入探讨JavaEE中的Spring框架,这是一个强大的、全面的企业级应用程序开发框架,它简化了Java开发并提供了丰富的功能。Spring的核心特性包括依赖注入(DI)、面向切面编程(AOP)以及对Java ...
在“Java Spring学习笔记”中,你将找到对Spring框架的全面介绍,包括IoC(控制反转)和DI(依赖注入)原理、AOP(面向切面编程)、Spring MVC、Spring Boot等核心内容。每个主题都结合了理论知识和实际示例,帮助你...
Spring框架是Java开发中不可或缺的一部分,它为开发者提供了强大的依赖注入(IOC)和面向切面编程(AOP)功能,以及用于构建Web应用程序的MVC框架。Spring Boot则是基于Spring框架构建的应用程序启动器,旨在简化...
这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...
《Spring 学习笔记五——深入理解Spring框架》 在软件开发领域,Spring框架是Java企业级应用开发的基石,其强大的功能和易用性使其成为开发者们的首选。本篇学习笔记将深入探讨Spring框架的核心概念和技术,帮助你...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **1.1 什么是Spring** Spring框架是一个开源的轻量级应用框架,主要用于简化企业级应用程序的开发过程。它的核心特性在于提供了一种灵活的方式来组织和...
### Spring学习笔记:深入理解AOP与Annotation驱动的动态代理 #### 核心知识点解析: 在探讨Spring框架中AOP(面向切面编程)及基于Annotation的动态代理之前,我们首先需要了解AOP的基本概念及其在Spring中的实现...
马士兵老师是知名的Java教育专家,他的Spring框架学习笔记深入浅出,对于初学者和进阶者来说都是一份宝贵的资源。这份笔记涵盖了Spring的核心概念、配置、AOP(面向切面编程)、DI(依赖注入)等关键知识点。 1. **...