這裏定義的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