锁定老帖子 主题:关于AOP的思考和疑问
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-08-31
关于AOP,基础的思想就不多说了,我有一个疑问: 是不是用AOP的前提是主逻辑类必须要是Spring容器创建的啊?比如我的测试类: ApplicationContext ctx = new FileSystemXmlApplicationContext("/applicationContext.xml"); AOPTest tester = new AOPTest(); AService serviceA = (AService) ctx.getBean("aService"); BServiceImpl serviceB = (BServiceImpl) ctx.getBean("bService"); tester.setAService(serviceA); tester.setBService(serviceB); tester.testCall(); 但是如果是这样,我的AService和BServiceImpl必须是通过容器创建的,这样就大大限制了使用性。因为如果我想用AOP的思想来扩展现有系统,那首先要修改系统生产bean的逻辑(都从Spring容器创建),这个几乎是不可能实现的。 这样想来,是不是AOP是量身为Spring打造的?但是我看了相关资料,JBoss已经集成了AOP,还有Naning,更不用说AspectJ了,但是对于我自己的系统,有没有更好的解决方案,通过反射的方式织入AOP的思想呢? 请大侠们不吝赐教。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-09-01
aspectJ
|
|
返回顶楼 | |
发表时间:2012-09-01
Kisses99 写道 aspectJ
这个说的太笼统了,能具体的讨论下吗? |
|
返回顶楼 | |
发表时间:2012-09-03
spring的aop是基于ioc实现的。。
|
|
返回顶楼 | |
发表时间:2012-09-03
LZ 您现在是想用AOP拓展程序吗?你的切面类呢?定义你的切面,然后配置切入点和通知,就行啦。。。
还有“那首先要修改系统生产bean的逻辑(都从Spring容器创建),这个几乎是不可能实现的。 ” 虽然不知道你的需求是什么,但是可以通过配置改变spring容器初始化bean的顺序的 具体你可以看看API中 bean的 生命周期 和 作用域 |
|
返回顶楼 | |
发表时间:2012-09-03
改造原有系统, 把原有系统的new操作都交给spring 改动是不可避免的。 配合注入,在使用aop不就行了, 使用annotation 的方式定义bean 修改还是很容易的。
|
|
返回顶楼 | |
发表时间:2012-09-03
a_alter 写道 改造原有系统, 把原有系统的new操作都交给spring 改动是不可避免的。 配合注入,在使用aop不就行了, 使用annotation 的方式定义bean 修改还是很容易的。
所有系统的new都改成容器生成真的有难度,毕竟系统太过庞大,能有更为简便的方式绕过这个局限行吗? |
|
返回顶楼 | |
发表时间:2012-09-03
一日一博 写道 LZ 您现在是想用AOP拓展程序吗?你的切面类呢?定义你的切面,然后配置切入点和通知,就行啦。。。
还有“那首先要修改系统生产bean的逻辑(都从Spring容器创建),这个几乎是不可能实现的。 ” 虽然不知道你的需求是什么,但是可以通过配置改变spring容器初始化bean的顺序的 具体你可以看看API中 bean的 生命周期 和 作用域 我的疑问就是我之前的系统是没有使用spring的,现在想用spring的AOP,是不是必须要将原来系统的new操作都改成容器来生成实例呢?如果是的话,那将改动太多。 关于切面,切点,通知我都可以实现,关键是想在不该原来逻辑的情况下,实现aop。 |
|
返回顶楼 | |
发表时间:2012-09-03
aine_pan 写道 一日一博 写道 LZ 您现在是想用AOP拓展程序吗?你的切面类呢?定义你的切面,然后配置切入点和通知,就行啦。。。
还有“那首先要修改系统生产bean的逻辑(都从Spring容器创建),这个几乎是不可能实现的。 ” 虽然不知道你的需求是什么,但是可以通过配置改变spring容器初始化bean的顺序的 具体你可以看看API中 bean的 生命周期 和 作用域 我的疑问就是我之前的系统是没有使用spring的,现在想用spring的AOP,是不是必须要将原来系统的new操作都改成容器来生成实例呢?如果是的话,那将改动太多。 关于切面,切点,通知我都可以实现,关键是想在不该原来逻辑的情况下,实现aop。 说实话,在业务不熟的情况下最后不要改,不然各种问题。。。。 如果非要实现aop你可以只把需要aop的那些bean交给spring管理。 |
|
返回顶楼 | |
发表时间:2012-09-04
在我的知识里面没有办法啊,如果你以前系统没有使用bean容器概念的话,那就相当于以前的对象生成都是硬编码啊,不存在扩展性,系统大的话就只能按模块改好了,也没有必要一次性改完的。 |
|
返回顶楼 | |