AOP可以像@Controller或@Service一样切入点。 但是如果没有spring的注释,它在Class上效果不佳。
package com.erp.module;
@Slf4j
public class SalesOrderModule {
public void cancel(){
log.info("test");
}
public static SalesOrderModule init(int type) {
SalesOrderModule salesOrderModule = new SalesOrderModule(salesOrder);
*****
return salesOrderModule;
我的Aspect.java如下
@Aspect
@Component
@Slf4j
public class WebLogAspect {
@Pointcut("execution(public * com.erp.controller.*.*(..)) || execution(public * com.erp.module.*.*(..))")
public void logPointCut() {
}
我调用取消如下:
SalesOrderModule so = SalesOrderModule.init(3);
so.cancel();
我知道这个问题与代理相关。但我怎么能
答案 0 :(得分:2)
因此,例如,Spring Framework的AOP功能通常与Spring IoC容器一起使用。使用普通bean定义语法配置方面(尽管这允许强大的“自动代理”功能):这是与其他AOP实现的重要区别。使用Spring AOP时,您可以轻松或高效地执行某些操作,例如建议非常细粒度的对象(例如域对象):在这种情况下,AspectJ是最佳选择。但是,我们的经验是,Spring AOP为适合AOP的企业Java应用程序中的大多数问题提供了出色的解决方案。
因此,如果您需要拦截非Spring托管代码,则需要使用AspectJ而不是Spring AOP。 TBH,到目前为止我并不需要。