0
我的班級:Spring AOP:如何攔截內部類?
@Aspect
public class ServiceAspect {
@Before("execution(public * com.test.server.support.service.*.Client.*(..))")
public void before(JoinPoint joinPoint) {
System.out.println("....");
}
}
春天-config.xml中內容只有:
<context:annotation-config/>
爲spring-servlet.xml:
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
<context:component-scan base-package="com.test.client.support">
<context:include-filter type="aspectj" expression="com.test.client.support.aspect.ServiceAspect"/>
</context:component-scan>
<context:component-scan base-package="com.test.manager"/>
<aop:aspectj-autoproxy proxy-target-class="true"/>
我希望通過這種方式,然後可xxx.Client
各班以下方法調用時,連接會自動創建。
當項目目前運行時,AOP無響應。客戶端類是自動生成的節儉IDL:
但是,如果theBefore
("execution (public * com.test.server.support.service.*.Client.*(..))")
IntoPointcut
("@within (org.springframework.stereotype.Controller)")
,你可以方法
注意之前進入。
有了這個描述真的很難說這個問題,但我有一個問題:你能告訴我具體的,完全合格的類名稱你想攔截的方法嗎?這些類是否直接在'com.test.server.support.service'包中?下面是一個分包?二?更多? – kriegaex 2014-11-03 11:11:37
com.test.server.support.service有許多類,每個類都有一個內部的Client類。我想截取所有的客戶端下的方法(com.test.server.support.service.Role.Client。客戶端是內部類的角色) – Mingjian 2014-11-04 01:45:56
對於我來說,不管客戶端是靜態的還是非靜態的內部類,這都是有效的。儘管我嘗試了純粹的AspectJ,而不是Spring AOP。但切入點語法和匹配算法應該是相同的。所以除非你有Spring配置問題,否則我不知道問題會出在哪裏。也許你可以通過發佈包含內部類的'Role'源代碼來更新問題。不要忘記包名稱和導入。請將這兩個添加到該方面。 – kriegaex 2014-11-04 12:36:26