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