Grails 3.2.8默认情况下似乎没有依赖注入为域类工作。
当我创建一个新应用程序并使用以下println添加Spring Security Core 3.1.1时:
protected void encodePassword() {
println "springSecurityService == null? ${(springSecurityService==null).toString()}"
password = springSecurityService?.passwordEncoder ? springSecurityService.encodePassword(password) : password
}
我明白了:
springSecurityService == null? true
如果我尝试类似地创建和注入服务,我会得到相同的空值。有一个很好的解决方法吗?
答案 0 :(得分:3)
从Grails 3.2.8开始,出于性能原因,默认情况下禁用域类自动装配。您可以通过设置render 'books/show', locals: { resource: "Some text" }
Grame已经提到了一个针对spring-security-core的补丁来解决需要服务注入的问题,同时重新启用自动装配。
请参阅我在3.2.8的非官方更改日志: https://gist.github.com/erichelgeson/be2f9f62ab63d989f2ec962ae7001f21