首页 > 解决方案 > 如何在 @PreAuthorize 中使用 Autowired 服务

问题描述

我正在尝试在ServiceA内部使用,@PreAuthorize但它不起作用

服务A

@Service
public class ServiceA {
    public void aFun() {
      return 1;
    }
}

服务B

@Service
public class ServiceB {
    @Autowire
    ServiceA serviceA;

    @PreAuthorize("1 == serviceA.aFun()") 
    public void bFun() {

    }
}

但这会导致他没有发现的异常serviceA

标签: springspring-bootspring-security

解决方案


根据 Sping 文档,bean 应该用“@”符号引用: https ://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions-bean-references

因此,尝试使用:

@PreAuthorize("1 == @serviceA.aFun()") 

推荐阅读