我有一个我在grails-app / services目录下移动的类,以便注入springSecurityService。这个类是spring userDetailsService类的实现(这是正确的术语吗?)。这是我在resources.groovy中的声明:
userDetailsService(com.company.product.PracticeUserDetailsService) {
grailsApplication = ref('grailsApplication')
}
此课程正在扩展GormUserDetailsService.
我尝试的dependencyInjection导致一个null对象。
class PracticeUserDetailsService extends GormUserDetailsService{
def springSecurityService
UserDetails loadUserByUsername(String username, boolean loadRoles) throws UsernameNotFoundException {
// impl omitted
}
}
如果我在grails中创建一些测试控制器或某些服务并注入springSecurityService
,它可以正常工作。所以,这个特定的类可能还有一些东西没有放在Grails生态系统中。我检查了this以尝试手动注入它,如下所示:
beans = {
springSecurityTEST(grails.plugins.springsecurity.SpringSecurityService) {}
}
答案 0 :(得分:5)
将PracticeUserDetailsService
从grails-app/services
移至src/groovy
并将resources.groovy
中的Spring bean定义更改为:
userDetailsService(com.company.product.PracticeUserDetailsService) {
grailsApplication = ref('grailsApplication')
springSecurityService = ref('springSecurityService')
}
答案 1 :(得分:0)
对我来说,发生在我使用GrailsApp.run(Application, args)
运行应用程序时...