0
我有以下实现:弹簧引导启动的AOP不会指点我的方面
public interface BusinessResource {
@RequiresAuthorization
public ResponseEnvelope getResource(ParamObj param);
}
和
@Component
public class BusinessResourceImpl implements BusinessResource {
@Autowired
public Response getResource(ParamObj param) {
return Response.ok().build();
}
}
和
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class AuthorizerAspect {
protected static final Logger LOGGER =
LoggerFactory.getLogger(AuthorizerAspect.class);
@Autowired
public AuthorizerAspect() {
LOGGER.info("Break point works here..." +
"so spring is creating the aspect as a component...");
}
@Around(value="@annotation(annotation)")
public Object intercept(ProceedingJoinPoint jp,
RequiresAuthorization annotation) throws Throwable {
LOGGER.info("BEGIN");
jp.proceed();
LOGGER.info("END");
}
}
的maven的依赖关系可以用spring-boot-starter-aop依赖关系年。那么,什么情况是,如果@RequiresAuthorization是在BusinessResource接口声明的方法使用AuthorizerAspect不会对周围的getResource方法拦截,但如果我改变现在执行标注同样的方法在BusinessResourceImpl类,方面将发生。
注意:通过接口级别的注释,代理甚至不会创建,而注释放置在实现级别中将为该资源创建代理。
问题是:有没有一种方法可以建议对象的注释只出现在界面上?
请确保在提交答案前没有问题。 invoke方法返回的地方在哪里?以及Advice类的包是什么? –