我听说 AOP 可以用于分离交叉方面,例如安全性、事务和日志记录等。
所以,我想了解一下spring security内部是否使用AOP?
最佳答案
是的,Spring Security内部使用AOP。例如,它用于全局方法安全。全局方法安全用于对某些方法(例如,在服务层)应用安全检查。
您可以在 GlobalMethodSecurityBeanDefinitionParser
中找到以下代码,它是与全局方法安全性相关的 Spring Security 基础结构的一部分:
if (useAspectJ) {
BeanDefinitionBuilder aspect =
BeanDefinitionBuilder.rootBeanDefinition("org.springframework.security.access.intercept.aspectj.aspect.AnnotationSecurityAspect");
aspect.setFactoryMethod("aspectOf");
aspect.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
aspect.addPropertyValue("securityInterceptor", interceptor);
String id = pc.getReaderContext().registerWithGeneratedName(aspect.getBeanDefinition());
pc.registerBeanComponent(new BeanComponentDefinition(aspect.getBeanDefinition(), id));
} else {
registerAdvisor(pc, interceptor, metadataSource, source, element.getAttribute(ATT_ADVICE_ORDER));
AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(pc, element);
}
几乎每一行都提到了 AOP。
有关全局方法安全性的更多信息可以在这里找到,例如,https://docs.spring.io/spring-security/site/docs/3.0.x/reference/ns-config.html在这里 https://spring.io/blog/2013/07/04/spring-security-java-config-preview-method-security/
关于spring - spring security内部使用AOP吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46056679/