Java Spring安全性:通过无法访问bean的接口对同一bean的自定义预授权方法

Java Spring安全性:通过无法访问bean的接口对同一bean的自定义预授权方法,java,spring,spring-mvc,spring-security,spring-aop,Java,Spring,Spring Mvc,Spring Security,Spring Aop,我正在尝试做类似的事情(这很有效) 然而,当MyService实现了一个接口并且我通过接口调用execute时,我得到了一个异常 在控制器处(参考) 例外情况: org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 11): Method call: Method hasAccessOnResource(java.lang.String) cannot be found on com.sun.proxy

我正在尝试做类似的事情(这很有效)

然而,当MyService实现了一个接口并且我通过接口调用execute时,我得到了一个异常

在控制器处(参考)

例外情况:

org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 11): Method call: Method hasAccessOnResource(java.lang.String) cannot be found on com.sun.proxy.$Proxy52 type

我做错了什么?这是正确的方法吗?如果我想对这个接口方法进行预授权,我需要采取什么方法?

检查
公共布尔hasAccessOnResource(String str)
是否也在接口中声明您是对的!非常感谢。我当然犯了那个错误!这与spring安全性无关。
@Controller
@Scope("session")
public class HomeController {

    @Autowired
    @Qualifier("myService")
    MyServiceInterface service; // <- doesn't work case
    //MyService service; <- working case

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(HttpSession session) 
    {
        service.execute("hello");
        return "home";
    }
}
@Service("myService")
@Scope("session")
public class MyService implements MyServiceInterface{

    public boolean hasAccessOnResource(String str)
    {
        return true;
    }


    @PreAuthorize("@myService.hasAccessOnResource(#str)")
    @Override
    public void execute(String str) 
    {
        System.out.println("hello");
    }
}
org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 11): Method call: Method hasAccessOnResource(java.lang.String) cannot be found on com.sun.proxy.$Proxy52 type