关于spring中aop为何意

sgelove 2010-01-29 11:29:04
最近几个项目中一直在使用ssh框架,不过说实话.到现在还不明白其中的AOP为何意,网上查阅的资料看过一些感觉还不是不很清楚,其中aop是一种业务组件还是一种编程思想?
还有spring.xml中为何要配置aop一些相关信息?
...全文
138 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
学习AOP过程中,路过,学习了。。。
小乐乐101010 2010-02-01
  • 打赏
  • 举报
回复

解释的很清楚啊。
[Quote=引用 21 楼 fengjssy 的回复:]
方法至上而下执行,AOP关注的是横切性。它是对OO的一个超级补充

应用:
  项目中一个方法执行,你可能要给他加点日志,对于某个方法你可能使用Logger.debug()打印一段信息,
但是项目中N个类N个方法都要加日志,你是不是还去每个方法上加日志代码呢???
肯定不会!累啊! 现在有AOP,ok,这些事你不要做了 在spring里配置一下aop就能帮你搞定了

  在SSH架构中,AOP最重要的功能就是做声明式的事务管理了,以前做个一个项目,没用spring,是struts+hibernate的架构,结果要进行数据库的操作的时候(比如保存一个对象),每次都要先
session.beginTransaction();,然后在commit一下提交事务,然后有异常了就回滚事务,都是些重复性的代码,现在有AOP就不一样了,你只要在spring中配置一下,告诉一下spring,你项目那些包下哪些类需要事务才能执行,然后在客户端调用这些类的方法的时候,spring会自动为这些类的方法在事务中运行,而你仅仅要做的就是写你的业务逻辑代码

  spring中aop的实现使用的第三方的一个框架aspectJ,它在声明事务的时候,先为要事务运行的类产生一个代理对象,然后在代理对象中加入事务。。
 
AOP的实现原理 :JDK的动态代理和CGLIB, 建议去了解动态代理设计模式,非常精辟的一个设计模式
[/Quote]
  • 打赏
  • 举报
回复
方法至上而下执行,AOP关注的是横切性。它是对OO的一个超级补充

应用:
项目中一个方法执行,你可能要给他加点日志,对于某个方法你可能使用Logger.debug()打印一段信息,
但是项目中N个类N个方法都要加日志,你是不是还去每个方法上加日志代码呢???
肯定不会!累啊! 现在有AOP,ok,这些事你不要做了 在spring里配置一下aop就能帮你搞定了

在SSH架构中,AOP最重要的功能就是做声明式的事务管理了,以前做个一个项目,没用spring,是struts+hibernate的架构,结果要进行数据库的操作的时候(比如保存一个对象),每次都要先
session.beginTransaction();,然后在commit一下提交事务,然后有异常了就回滚事务,都是些重复性的代码,现在有AOP就不一样了,你只要在spring中配置一下,告诉一下spring,你项目那些包下哪些类需要事务才能执行,然后在客户端调用这些类的方法的时候,spring会自动为这些类的方法在事务中运行,而你仅仅要做的就是写你的业务逻辑代码

spring中aop的实现使用的第三方的一个框架aspectJ,它在声明事务的时候,先为要事务运行的类产生一个代理对象,然后在代理对象中加入事务。。

AOP的实现原理 :JDK的动态代理和CGLIB, 建议去了解动态代理设计模式,非常精辟的一个设计模式
d_star 2010-02-01
  • 打赏
  • 举报
回复
面向切面的编程,是一种编程思想
  • 打赏
  • 举报
回复
理论归理论

要说真正理解 路还很长


祝福
liguangwen86 2010-02-01
  • 打赏
  • 举报
回复
面向切面编程
dinghun8leech 2010-01-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zl3450341 的回复:]
Java codeAOP(Aspect Oriented Programming)的概念
首先,需要明确的一点就是,AOP 不是用来替换OOP 的,而是OOP 的一
个补充,通过提供另外一种思考程序结构的途经来弥补OOP 的不足。在OOP
中模块化的关键单元是类(classes),而在AOP 中模块化的单元则是切面。切面
能对关注点进行模块化。回想在以往的代码段中,程序一般都是至上而下的代码
结构?-
[/Quote]
这一段看得我都晕了。
zl3450341 2010-01-31
  • 打赏
  • 举报
回复
AOP(Aspect Oriented Programming)的概念
首先,需要明确的一点就是,AOP 不是用来替换OOP 的,而是OOP 的一
个补充,通过提供另外一种思考程序结构的途经来弥补OOP 的不足。在OOP
中模块化的关键单元是类(classes),而在AOP 中模块化的单元则是切面。切面
能对关注点进行模块化。回想在以往的代码段中,程序一般都是至上而下的代码
结构,有些代码并非业务代码,它们仅仅是一个较为常用的逻辑处理块,但是在
代码中只要需要用到,就得处处编写或这实时调用,如日志、异常、事务处理等。
而AOP 的出现,使得这些代码不再凌乱,并且还可以使其模块化,变得更易于
维护和管理。说得简单一点,AOP 就是可以在程序运行的过程当中,动态的在
程序的指定位置插入一些特殊的代码来完成一些特定的功能。
更进一步,OOP 中的设计模式,让我们的类处在一个封闭的、静态的环境下,
虽然提供有接口和抽象类,并伴随有重载和重写的机制在其中,但这种灵活是有
限的,它不能动态的对程序进行扩展或修改程序内部的行为。而面向切面能够剖
开对象的内部,动态修改模型的行为,从而可以不断的增长系统以满足新的需求。
AOP 可以将一种常用的或者特定的行为封装成可重用模块,将其命名为Aspect
(切面),这些切面与业务逻辑应该是无关的。AOP 提高了代码的可重用性,并且
还提供了动态修改内部代码的能力。AOP 框架是Spring 的一个重要组成部分。
但是Spring IoC 容器并不依赖于AOP,这意味着你有权利选择是否使用AOP,
AOP 做为Spring IoC 容器的一个补充,使它成为一个强大的中间件解决方案。
crazylaa 2010-01-31
  • 打赏
  • 举报
回复
名词解释?路过,楼主给1分
Arthur0088 2010-01-31
  • 打赏
  • 举报
回复
不能光听什么面向切面编程之类的名词,要真正去理解AOP的运行机制以及在应用中一般使用的步骤等
tonggj 2010-01-31
  • 打赏
  • 举报
回复
aop还有很多地方值得学习的,继续努力;
w3329307 2010-01-31
  • 打赏
  • 举报
回复
aop明白了,spring就入门了
要多体会自然也就会了
LWBTTT 2010-01-30
  • 打赏
  • 举报
回复
思想,
我要分
道光2008 2010-01-30
  • 打赏
  • 举报
回复
aop说白了就是java的动态代理封装
zhj92lxs 2010-01-30
  • 打赏
  • 举报
回复
都说的很好啊
Purking 2010-01-30
  • 打赏
  • 举报
回复
AOP 的概念 Google 一下就知道了啊, AOP 是思想啊, 就如同面向对象的思想;

而 Spring AOP 是 Spring 对 AOP 这个思想的一个实现, 最成熟的是 AspectJ 专门
的面向切面的技术; Spring AOP 的实现虽然没有 AspectJ 那么全面,但是是现在最
常用的 AOP 的应用;

而声明式事务是利用了 Spring AOP 来实现的;
config_man 2010-01-30
  • 打赏
  • 举报
回复
mralcor 2010-01-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 huaan03 的回复:]
AOP(面向切面编程)是一种编程技术,用来在系统中提升业务的分离。说白了就是:把各个模块或者说是组件都需要使用的公共功能提取出来做成单独的组件,以供其他的组件使用,免得重复编写代码,且便于维护。典型的面向切面编程如:事物管理,日志,安全管理等。
[/Quote]

面向切面编程
chht108 2010-01-30
  • 打赏
  • 举报
回复
面向切面编程,说白了就是java的动态代理封装
dinghun8leech 2010-01-30
  • 打赏
  • 举报
回复
楼主试着看看自己的项目中,日志服务和数据库事务管理,都藏在哪里了,是不是和数据库操作模块胶在一起了。
加载更多回复(3)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧