依赖注入在Grails服务中不起作用

时间:2015-01-14 19:05:12

标签: grails dependency-injection spring-security

我有一个我在grails-app / services目录下移动的类,以便注入springSecurityService。这个类是spring userDetailsS​​ervice类的实现(这是正确的术语吗?)。这是我在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) {}

}

2 个答案:

答案 0 :(得分:5)

PracticeUserDetailsServicegrails-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)运行应用程序时...