gpt4 book ai didi

java - Spring 建议不适用于某些类的某些方法

转载 作者:太空宇宙 更新时间:2023-11-04 15:10:17 26 4
gpt4 key购买 nike

所以,我在将方面添加到已创建的系统时遇到问题。问题 - 切入点对某些类不起作用。例如,这段代码效果很好:

<aop:config proxy-target-class="true">
<aop:pointcut id="addSubmitListener"
**expression="execution (* com.solutions.foo.ClassA.methodA(..))"/>**
<aop:aspect ref="hijackBeforeAddSubmitListenerBean">
<aop:around method="proceedWhileNotDash" pointcut-ref="addSubmitListener"/>
</aop:aspect>
</aop:config>

ClassA 在此 applicationContext 中定义为 bean。

现在,其他示例。该示例不起作用。

<aop:pointcut id="addSubmitListener"
expression="execution (* com.click.otherfoo.ClassB.methodB(..))"/>

在其他 applicationContext 中定义的 B 类,通过 <import resource="classpath*:... 导入

还有一个区别 methodB - 具有 void 类型,而 methodA - 没有

最佳答案

我刚刚尝试过这个,这可能是也可能不是您的配置。但你提到的代码对我来说效果很好。这是我根据您的问题和提到的信息尝试过的方法。

如果我只是更改 anotherConfig.xml 文件中的 bean 定义,它也适用于 ClassA 。也适用于ClassB

applicationContext.xml

<import resource="classpath*:anotherConfig.xml"/>

<context:component-scan base-package="com.appContextexample"/>
<aop:aspectj-autoproxy/>

<aop:config proxy-target-class="true">
<aop:pointcut id="addSubmitListener" expression="execution (* com.click.otherfoo.ClassB.methodB(..))"/>
<aop:aspect ref="hijackBeforeAddSubmitListenerBean">
<aop:around method="proceedWhileNotDash" pointcut-ref="addSubmitListener"/>
</aop:aspect>
</aop:config>

<bean id = "hijackBeforeAddSubmitListenerBean" class = "com.appContextexample.HijackBeforeAddSubmitListenerBean"/>

</beans>

anotherConfig.xml

<bean id="classA" class="com.click.otherfoo.ClassB"></bean>

Application.java 这是起点。

public class Application {

public static void main(final String[] args) {
final ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
final ClassB bean = (ClassB) context.getBean("classA");
bean.methodB("test");

System.out.println("appContext created" + bean);
}

ClassB.java

package com.click.otherfoo;

public class ClassB {

public void methodB(final String str) {
System.out.println(str);
}

}

最后是方面。

public class HijackBeforeAddSubmitListenerBean {

public Object proceedWhileNotDash(final ProceedingJoinPoint pjp) throws Throwable {
System.out.println("Called the aspect");
pjp.proceed();
return null;

}

关于java - Spring 建议不适用于某些类的某些方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21419707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com