- 浏览: 1062353 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
设计系统的核心业务组件。基于针对接口编程的原则,一个好习惯是先使用接口来定义业务组件的功能,下面使用Component来代表业务组件接口。
Component.java代码如下:
package springroad.demo.chap5.exampleB;
public interface Component {
void business1();//商业逻辑方法1
void business2();//商业逻辑方法2
void business3();//商业逻辑方法3
}
写一个Component的实现ComponentImpl类,ComponentImpl.java代码如下:
package springroad.demo.chap5.exampleB;
public class ComponentImpl implements Component {
public void business1() {
System.out.println("执行业务处理方法1");
}
public void business2() {
System.out.println("执行业务处理方法2");
}
public void business3() {
System.out.println("执行业务处理方法3");
}
}
写一个Spring的配置文件,配置业务Bean。aspect-spring.xml的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="component"
class="springroad.demo.chap5.exampleB.ComponentImpl">
</bean>
</beans>
然后写一个用于在客户端使用业务Bean的ComponentClient类,代码如下:
package springroad.demo.chap5.exampleB;
import org.springframework.context.ApplicationContext;
public class ComponentClient {
public static void main(String[] args) {
28
ApplicationContext context=new org.springframework.context.support.ClassPathXmlApplicationContext("springroad/demo/chap5/exampleB/aspect-spring.xml");
Component component=(Component)context.getBean("component");
component.business1();
System.out.println("-----------");
component.business2();
}
}
运行程序,我们可以看到结果输出为:
执行业务处理方法1
-----------
执行业务处理方法2
这个业务Bean只是简单的执行业务方法中代码,现在由于企业级应用的需要,我们需要把业务Bean中的所有business打头所有方法中的业务逻辑前,都要作一次用户检测、启动事务操作,另外在业务逻辑执行完后需要执行结束事务、写入日志的操作。直接修改每一个方法中的代码,添加上面的逻辑,前面已经说过存在不可维护等诸多问题,是不可取的。
由于安全检测、事务处理、日志记录等功能需要穿插分散在各个方法中,具有横切关注点的特性,因此我们想到使用Spring的AOP来实现。
5.3.2 使用基于Schema的配置文件配置Spring AOP
定义一个用于处理横切交叉关注点问题的切面模块,Spring AOP使用纯Java的方式来实现AOP的,因此我们使用一个名为AspectBean的类来处理上面所说的问题。
作为示例,AspectBean.java中的内容如下:
package springroad.demo.chap5.exampleB;
public class AspectBean {
public void validateUser()
{
System.out.println("执行用户验证!");
}
public void writeLogInfo()
{
System.out.println("书写日志信息");
}
public void beginTransaction()
{
System.out.println("开始事务");
}
public void endTransaction()
{
System.out.println("结束事务");
}
29
}
(在实现应用中,用户验证、日志记录、事务处理都应该是在上面的方法中调用专门的模块来完成。另外,还要考虑很多问题,比如与连接点上下文相关的目标对象、参数值等。)
有了处理横切交叉问题的切面模块Bean,下面我们就可以在Spring的配置文件中进行Spring AOP相关的配置了。把aspect-spring.xml改成如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<aop:config>
<aop:aspect id="aspectDemo" ref="aspectBean">
<aop:pointcut id="somePointcut"
expression="execution(* springroad.demo.chap5.exampleB.Component.business*(..))" />
<aop:before pointcut-ref="somePointcut"
method="validateUser" />
<aop:before pointcut-ref="somePointcut"
method="beginTransaction" />
<aop:after-returning pointcut-ref="somePointcut"
method="endTransaction" />
<aop:after-returning pointcut-ref="somePointcut"
method="writeLogInfo" />
</aop:aspect>
</aop:config>
<bean id="aspectBean"
class="springroad.demo.chap5.exampleB.AspectBean">
</bean>
<bean id="component"
class="springroad.demo.chap5.exampleB.ComponentImpl">
</bean>
</beans>
上面配置文件中的黑体部分是增加的内容,原来与业务Bean相关的配置不变。
为了能正确运行客户端代码,需要把Spring项目lib目录下aspectj目录中的aspectjweaver.jar文件添加到classpath中。
不需要重新编译客户端代码,直接运行示例程序ComponentClient,会看到如下的内容输出:
执行用户验证!
30
开始事务
执行业务处理方法1
结束事务
书写日志信息
-----------
执行用户验证!
开始事务
执行业务处理方法2
结束事务
书写日志信息
由此可见,在客户调用业务Bean Component中的business1及business2的方法时,都自动执行了用户验证、事务处理及日志记录等相关操作,满足了我们应用的需求。
- src.rar (2.4 KB)
- 下载次数: 2
发表评论
-
spring整合memeched
2017-11-23 14:18 493XMemcached是一个基于Java nio的memcac ... -
Spring 4 MVC @RestController 注解实现REST Service
2017-11-07 10:56 988简短 & 快速介绍REST REST表示 Repr ... -
SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程
2017-10-25 15:54 5271、基本概念 1.1、Spring Sp ... -
spring mvc 文件上传
2017-10-03 23:14 515直接上代码吧,大伙一看便知 这时:commonsmulti ... -
SpringMVC对静态资源进行缓存
2017-09-26 15:19 398在dispatcher-servlet.xml中配置: ... -
springmvc常用注解标签详解
2017-09-12 08:30 3541、@Controller 在SpringMVC ... -
Spring JdbcTemplate 与 事务管理 学习
2014-11-12 09:35 763Spring的JDBC框架能够承担资源管理和异常处理的工作, ... -
Spring中使用annotation注入
2014-11-12 08:42 664我们使用Spring 一般式在xml配置文件中进行注入.但是 ... -
spring集成数据库连接池
2014-11-07 14:30 804我项目中使用的是proxool数据库连接池, 首先在web ... -
spring+xifre 发布webservice服务
2011-12-28 10:01 1653利用xfire编写webservice的例子,内容如下1. x ... -
spring3.0事物配置
2011-11-02 16:47 1862第一种配置方法:基于XML的事务管理 这种方法不需要对原有的 ... -
spring aop的注解配置中,前置,后置,环绕通知,以及异常通知怎么获得被代理方法的参数
2011-10-23 22:17 4962定义的接口 package com.aspectaop; ... -
spring 事物配置全文
2011-10-20 10:39 1028根据代理机制不同,有以下几种配置方式: 先定义 ... -
spring 2.0使用AOP实例(基于Annotation的配置方式)
2011-10-19 14:53 1202使用Java5注解配置及使用Spring AOPSpring2 ... -
spring1.x使用AOP实例
2011-10-19 08:23 1347spring1.x使用AOP配置。 applicationC ... -
使用 Spring 注释学习笔记
2011-10-18 10:33 822概述 注释配置相对于 XML 配置具有很多的优势: 它可 ... -
spring 3.0配置实用例-applicationContext.xml 空白文档
2011-10-18 10:24 2327<?xml version="1.0" ... -
使用spring2.5注释驱动的IOC功能
2011-10-13 14:26 705概述 注释配置相对于 XML 配置具有很多的优势: 它可 ... -
利用Annotation来实现属性的注入
2011-05-06 21:36 1173在以前的SPRING中我们通常采用的方式是在XML文件来来实现 ... -
使用SPRING的IOC的好处
2011-03-01 00:06 1774IOC:控制反转,它是不 ...
相关推荐
这篇博客文章将探讨如何在Spring 2.0中使用AOP实例,特别是通过注解来实现。 首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了横切关注点,即那些跨越多个对象的行为或责任。在Spring中,切...
在基于XML的配置方式下,Spring AOP提供了直观且灵活的声明式方法来实现这些关注点的分离,使得业务逻辑代码更为简洁。 在Spring AOP中,我们首先需要定义一个切面(Aspect),它包含了若干个通知(Advice)。通知...
在Spring2.0中,可以通过XML配置文件、注解或者基于Java的配置来实现DI,这大大提升了开发效率。 其次,Spring2.0增强了AOP的功能。AOP允许开发者将横切关注点(如日志、事务管理、安全性等)从核心业务逻辑中分离...
7. **配置方式**:Spring AOP可以通过XML配置、注解或者自定义的Aspect类来实现。注解驱动的AOP更简洁,而自定义Aspect类提供了更大的灵活性。 8. **织入(Weaving)**:织入是将切面应用到目标对象以创建代理对象...
这一版本引入了基于注解的AOP支持,使得开发者可以更直观地定义切面,无需编写XML配置。例如,@Before、@After、@Around等注解可以直接应用于方法上,简化了事务管理、日志记录等跨切面的处理。 另一个显著的改进是...
7. **最佳实践**:在实际开发中,集成Struts2和Spring可以遵循一些最佳实践,例如使用注解进行配置以减少XML的复杂性,使用Spring的AOP处理事务,以及利用Spring的MVC支持来简化视图和模型的处理。 8. **测试与调试...
本实例主要探讨的是使用XML配置的方式来实现AOP。XML配置虽然相比注解方式略显繁琐,但它提供了更大的灵活性,尤其是在需要对多个类或方法应用相同通知(Advice)时。 首先,我们需要在Spring的配置文件中启用AOP...
在Spring的XML配置文件中,我们可以创建一个`<aop:config>`元素,并在其内部定义`<aop:advisor>`来创建Advisor。Advisor的`advice-ref`属性用于指定通知bean的ID,`pointcut-ref`属性用于指定切点bean的ID。 2. ...
5. **Spring的Bean工厂与应用上下文**:Bean工厂和应用上下文是Spring容器的两个主要实现,它们负责管理Bean的实例化、配置和依赖注入。理解这两者之间的区别和应用场景是深入理解Spring的基础。 6. **数据访问集成...
在Spring 4.0中,AOP支持更加完善,除了XML配置外,还可以使用Java配置或基于注解的配置。此外,Spring还提供了基于代理的AOP和基于CGLIB的AOP,可以根据实际需求选择合适的方式。 通过上述步骤,你可以创建一个...
在提供的文档中,《Spring JavaConfig参考文档》详细介绍了如何使用Java类来替代XML配置。Spring 2.0引入了@Configuration和@Bean注解,使得配置更加直观且易于测试。这种方式减少了XML配置的复杂性,提高了代码的...
本文将详细介绍如何配置和构建一个基于Struts2、Hibernate3.2和Spring2.0的企业级Java应用入门实例。首先,我们理解整体架构,这有助于我们更好地了解各个组件的作用。 **1. 整体架构** 在企业级Java应用中,常见...
**Spring AOP 使用实例** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它提供了一种在不修改原有代码的情况下,通过代理方式添加额外功能的技术。这种技术使得我们...
通过XML配置文件或注解,开发者可以声明组件及其依赖,由Spring容器负责实例化、装配和管理这些对象。这种控制反转的模式使得代码更加灵活,降低了组件间的耦合度。 其次,Spring的AOP特性允许开发者定义横切关注点...
通过实例解析,读者将了解到如何使用XML配置或注解来实现依赖注入,以及如何创建和管理Bean。 接下来,教程会详细讲解Spring的AOP(面向切面编程,Aspect Oriented Programming)特性。AOP允许开发者在不修改原有...
**Spring的AOP实例——XML与@AspectJ双版本解析** Spring框架的AOP(面向切面编程)是其核心特性之一,它提供了一种在不修改代码的情况下,对程序进行横向关注点(如日志、事务管理、权限控制等)插入的方法。本...
- **Bean的定义与实例化**:通过XML或注解定义Bean,BeanFactory负责根据定义创建和管理Bean。 - **Bean的特性**:包括初始化方法、销毁方法、依赖检查、自动装配等,允许自定义Bean的生命周期。 - **Bean的高级...
在这个"SpringAop实例"中,可能包含了演示如何创建和使用这两种配置方式的代码示例。文件列表中的"spring32"可能是指Spring 3.2版本的相关文件,这个版本的Spring对AOP的支持已经相当成熟。 通过学习这个实例,你...