这里定义的Spring配置内部的方面是如何定义使用批注方面的例子:如何使用Java配置仅
@Aspect
public class BlaBla() {
@Pointcut(...)
...
@Before(...)
...
@After(...)
...
}
这是我通过研究发现的唯一途径。但是我希望BlaBla类不会被注解和切入点方法污染。我希望它仍然是一个POJO。如果我是用XML Spring配置,我可以很容易做到这一点:
<bean id="blaBla" class="BlaBla">...</bean>
<aop:config>
<aop:aspect ref="blaBla">
<aop:pointcut .../>
<aop:before .../>
<aop:after .../>
</aop:aspect>
</aop:config>
不过,我没有使用XML配置,而是一个Java配置来代替。基本上问题是,我怎么能说春天那个类BlaBla是一个没有改变BlaBla类本身的方面,而是在一个java类中定义它,注解是@Configuration
spring注释。
AOP IST的主要原则modularise一个横切关注点 - 所谓的一个方面 - 在一个地方像你这样modularise一个核心关注到一个类。为什么你想撕开它呢?我从未理解这种方法。你的第一个代码示例说明了这一切:“这是BlaBla的一个方面,包含以下切入点和建议等。”你想要的只是没有意义的IMO。在一个方面维护方面相关的东西,而不是与它分开。为什么在试图理解方面逻辑时在两个地方搜索? – kriegaex
因为BlaBla也是一个bean。理论上我可能希望将它用作一组接口的方面,同时将它注入其他类并以不同的方式使用它。在这种情况下,我不希望我的bean有一个公共切入点方法,因为它可能不属于这个对象在商业意义上的含义。对我个人而言,它似乎也更加孤立。好像我会更安全。如果后来我决定通过非aop方式使用BlaBla,会怎么样?在这种情况下,我只是删除配置,而不是触及它。 –
我不会购买你的观点,但祝你好运。 – kriegaex