我可以在Employee类上应用以下方面,但不能在spring内置类DelegatingMessageSource
中应用。这是方面定义
@Aspect
@Component
public class LogCustomAspect {
//It does not work
@Before("execution(* org.springframework.context.support.DelegatingMessageSource.getMessage(..))")
public void logResponse1(JoinPoint jp) {
System.out.println("Inside logResponse1");
}
// It works
@Before("execution(* com.myproject.Employee.getEmployee(..))")
public void logResponse2(JoinPoint jp) {
System.out.println("logResponse2");
}
}
我不确定我在这里缺少什么,以及如何申请春天提供的课程?
答案 0 :(得分:0)
通常,当Spring AOP无法应用于类时,原因是该类不是Spring bean /组件。也许这适用于DelegatingMessageSource
,作为我没有检查过的非Spring用户。如果这不是原因(一些Spring专家可能会告诉你)可能你有配置问题。
但如果我的假设是正确的,那么将一个方面编织到该类中的唯一方法是将Spring配置为使用完整的AspectJ via LTW (load-time weaving)。 AspectJ不依赖于动态代理,而是直接编织到原始类的字节码中。
答案 1 :(得分:0)
由于DelegatingMessageSource
不是Spring托管bean,因此不会应用方面。以下是供您参考的代码DelegatingMessageSource。
我建议尝试在DelegatingMessageSource
个类中定义一个@Configuration
的bean。也许这会奏效:
@Bean
public HierarchicalMessageSource messageSource() {
return new DelegatingMessageSource();
}