Nenhum resolvedor de bean registrado no contexto para resolver o acesso ao bean
Estou tentando implementar a segurança do método usando o Java Config, mas estou recebendo um erro: -
org.springframework.expression.spel.SpelEvaluationException: EL1057E:(pos 1): No bean resolver registered in the context to resolve access to bean 'appPermissionEvaluator'
O método é: -
@PreAuthorize("@appPermissionEvaluator.hasSystemPermission()")
public String something() {
...
}
A definição da classe Config é (MethodSecurityConfig.java): -
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {
@Bean
public AppPermissionEvaluator appPermissionEvaluator() {
return new AppPermissionEvaluator();
}
@Override
protected MethodSecurityExpressionHandler createExpressionHandler() {
DefaultMethodSecurityExpressionHandler expressionHandler =
new DefaultMethodSecurityExpressionHandler();
expressionHandler.setPermissionEvaluator(appPermissionEvaluator());
return expressionHandler;
}
...
}
Eu verifiquei que sou capaz de conectar automaticamente o bean na mesma classe, também achei que os métodos hasPermission () padrão estão funcionando conforme os implementei, o único problema é ler o bean no SpEL. Não tenho certeza do que está errado. Algum ponteiro?
Estou usando o Spring 4.1.5 e o Spring security 3.2.7