- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想为我说清楚。
我了解了 AOP 概念,我明白这是共享横切服务的好方法。 (日志记录、安全、事务...)
但我想说/问一些关于这个想法及其实现的事情。
我读到有一些方法,例如 AspectJ、JBOSS AOP,以便将 AOP 融入我的业务逻辑。
但它不是很久以前就在这里了吗?
比方说,我想在我的组件(Java bean、EJB 等等......)之间共享一个日志记录或安全实现
为什么我不能创建一个 Singleton bean 来确保它只有一个实例,并且只要任何组件需要它的日志记录/安全服务,它就会查找并使用它的服务。
为什么我需要理解并拥有所有那些“大”实现,例如 aspectj 或 jboss AOP?我在这里想念什么?
最佳答案
AOP 的思想是将公共(public)逻辑放在一个地方(您的单例解决方案也解决了这个问题)并且是“不可见的”(透明的)。使用 AOP,您的日志记录代码甚至不是业务逻辑的一部分,而是在幕后“注入(inject)”。
它也更加动态——您不需要在每次需要日志记录时都调用单例服务。只需配置一次切入点(例如:“此包中的所有 setter ”),日志记录将应用于所有现有代码和新代码。
此外,AOP 更加灵活和强大。您可以询问 AOP 实现:“每次我调用以“save*
”开头并采用一个参数的方法时,请启动一个事务”或“如果方法返回 Customer
抛出IllegalAgumentException
的异常子类,请再次调用该方法。
AOP 不仅仅是对通用逻辑进行分组。
关于java - AOP 实现背后的重要思想是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10969545/
我想编写一种方法,从单向链表中删除具有重复数据值的连续项。该方法应返回移除的项目数。该方法应根据需要清理内存,并应假定内存是使用 new 分配的。 比如传入列表 ->a->b->c->c->a->b-
大家好! 属性未在 C++ 中实现。我估计我们不能写 myObject.property = value; // try to set field f_ to value 是 property 是
我正在尝试学习 java 中的设计原理...他们说,编程一个接口(interface)并实现一个接口(interface)而不是类.. 记住这一点,这是我的用例.. 从文件中读取两种格式的数据(csv
事件、工作、 self 和联系人只不过是 DTO 对象,每个对象都可以从数据库中添加、编辑和删除。我对用例图不太熟悉,所以我想知道这是否正确或可以改进。 这里有什么可以概括的吗?实现中的添加编辑和删除
我是一名优秀的程序员,十分优秀!