- 浏览: 764507 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 9431、struts标签校验更加严格,如果struts标签中存在嵌 ... -
Spring框架下获取Bean的几种方式
2011-11-03 00:06 4059通过xml配置文件 bean配置在xml里面,spri ... -
Activiti 5.6:子流程(subProcess)
2011-09-22 15:26 12671Activiti 5.6提供了子流程的实现,包括两种基于子流程 ... -
Activiti 5.6:配置与Spring整合
2011-09-21 13:00 11403Activiti 5.6与Spring整合也比较简单,其基本 ... -
Activiti 5.6安装配置
2011-09-21 11:38 5855安装配置Activiti 5.6还是比较容易的,在这里 ... -
Spring注解方式,异常 'sessionFactory' or 'hibernateTemplate' is required的解决方法
2011-09-01 23:08 17954启动工程时出现异常: Caused by: java.lang ... -
Spring 注解@Component,@Service,@Controller,@Repository
2011-09-01 21:02 1115Spring 2.5 中除了提供 @Component 注释外 ... -
使用 Spring 2.5 基于注解驱动的 Spring MVC
2012-02-29 15:54 1066转自:http://www.ibm.com/developer ... -
log4j.properties配置详解
2011-07-07 14:41 1083Log4J的配置文件(Configuration File)就 ... -
Spring注解详解
2011-01-04 01:02 1404基于注释(Annotation)的配置有越来越流行的趋 ... -
Spring2.x与Spring1.x的单例模式的配置区别
2010-03-11 17:49 2110在Spring1.x中配置单例的方法为: <bean i ... -
一个Web Project中无法打断点的原因
2010-02-28 10:59 1213新建一个标准的SSH工程:struts2,spring2,hi ... -
Spring管理struts中的action
2009-10-28 16:49 1103让Spring管理struts中的action,可以在stru ... -
Spring学习笔记(八)——Spring远程服务
2009-09-17 09:59 1184目前Spring提供的远程服务主要有: ◆RMI:借助于Spr ... -
Spring学习笔记(七)——Spring持久化服务 DAO JDBC ORM
2009-09-15 17:55 3502对于RDBMS相关的应用而 ... -
Spring学习笔记(六)——Spring消息服务-JMS
2009-09-10 16:19 2844JMS即java消息服务。在JMS中JMS消息并不同应用直接交 ... -
Spring学习笔记(五)——Spring事务服务-JTA
2009-09-08 17:47 5214Spring为事务管理提供一 ... -
Spring学习笔记(四)——Spring框架概述
2009-09-03 21:46 1036Spring框架的分成工作,即模块化,完成的非常好。 1 ... -
Spring学习笔记(二)——Spring Ioc反转控制
2009-09-01 16:49 3203Gof曾提出,针对接口编程,而不是实现。 通常情况下,开发者将 ... -
propertyConfigurer spring 引入多个属性文件
2009-08-31 11:23 5584<bean id="propertyConfi ...
相关推荐
《Spring技术内幕》学习笔记1——IoC容器体系结构 《Spring技术内幕》学习笔记2——IoC定位Bean定义资源 《Spring技术内幕》学习笔记3——IoC容器载入Bean定义资源文件 ...《Spring技术内幕》学习笔记7——AOP基础
NULL 博文链接:https://microjava.iteye.com/blog/525796
Spring Aop 学习笔记
SpringAOP学习笔记以及四个可运行的Demo,涵盖经典代理模式、基于注解、基于xml配置这3方面的Demo
NULL 博文链接:https://linres.iteye.com/blog/281221
自己学习spring课程的笔记。笔记都是根据尚硅谷的课程(spring ioc,spring aop,spring mvc,spring boot等)写的。 主要内容:spring ioc,spring aop,spring mvc,spring boot
在“Java Spring学习笔记”中,你将找到对Spring框架的全面介绍,包括IoC(控制反转)和DI(依赖注入)原理、AOP(面向切面编程)、Spring MVC、Spring Boot等核心内容。每个主题都结合了理论知识和实际示例,帮助你...
Spring学习笔记Spring spring的配置 IOC 依赖注入 基于Xml的注入 基于注释的注入 Spring的自动注入和属性自动注入 AOP 静态代理 动态代理 使用spring实现AOP 基于Annotation实现AOP 基于XML实现AOP ...
spring从HelloWorld到ioc,aop,对JDBC,hibernate,struts1,struts2的支持笔记
第三课:模拟Spring功能 5 第四课:搭建sping的运行环境 8 一、 建立一个新的项目 8 二、 建立spring的配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 ...
内容概要:学习Spring的一些学习笔记,主要学习Spring 框架两大核心机制(IoC、AOP) 笔记大纲:阅读笔记可以学习了解一下内容 如何使用 IoC ;配置文件;IoC 底层原理;通过运行时类获取 bean;通过有参构造创建 ...
Spring最新资料总结,包含SpringMVC,IOC,AOP面向切面编程,以及与Struts2,Hibernate的集成.
自己辛苦整理的网上的...13——第十二个ESB代码Spring AOP 113 14——第十三个ESB代码Transform CSV to XML 122 15——第十四个ESB代码Transform XML to POJO 128 16——第十五个ESB代码Web Service Consumer 1 151
spring很好的学习笔记,我想对于想学好或者面试好ioc和aop的同学有帮助的
反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多 著名的第三方框架和类库...
Spring入门学习笔记,内容包括Spring介绍,Spring配置文件,Spring配置数据源,Spring的注解开发,Spring集成Junit,Spring的AOP,jdbcTemplate介绍,Spring控制事务流程,Spring集成web。
NULL 博文链接:https://coolszy.iteye.com/blog/541997
Spring框架的学习笔记,包括了springIOC,spirng注入,springAoP,SpringJdbc模板的使用,Spring声明式事务。
spring学习笔记脑图,简单理解aop ioc 事务管理,和spring的基本结构以及底层原理所用到的设计模式