如何解决Grails数据服务无法使用常规服务
另一个Covid日快乐。当我使用generate-all时,Grails会为我创建数据服务。我开始了解什么是数据服务。
我也为我的Author和Book类提供自己的服务。我将服务命名为ImportService。在数据服务将我的书籍保存到数据库之前,我在ImportService中有一些方法可以清理从CSV文件读取的书籍数据。我还按照说明将数据服务设为抽象类。因此,我可以将自己的方法放在数据服务中。
由于Author具有其自己的AuthorService,而Book具有其自己的BookService,因此我希望其他数据服务可以访问ImportService中的方法。因此,我不必多次复制和粘贴导入CSV代码。因此,我将 ImportService importService 行放在AuthorServie类和BookService类中。那进展不顺利。在数据服务类中, importService 始终为NULL。我用谷歌搜索这个问题。他们说我不能向grails.gorm.services.Service注入其他服务。
有一篇文章说要制作一个豆子。我是Grails的新手。即使发布了代码,我也不知道他们在说什么。我的部分背景是汇编语言,C和Pascal。我的头充满了像“自上而下”,子例程,库,“地址”和“指针”之类的术语。我不知道什么是豆。
就是这样。我想知道这是错误还是设计使您无法向gorm服务注入服务。
感谢您的“指针”。
解决方法
查看位于https://github.com/jeffbrown/tom6502servicedi的项目。该项目使用Grails 4.0.3和GORM 7.0.7。
package tom6502servicedi
class ImportService {
int getSomeNumber() {
42
}
}
package tom6502servicedi
import grails.gorm.services.Service
import org.springframework.beans.factory.annotation.Autowired
@Service(Author)
abstract class AuthorService {
@Autowired
ImportService importService
// ...
int getSomeNumberFromImportService() {
importService.someNumber
}
}
package tom6502servicedi
import grails.validation.ValidationException
import static org.springframework.http.HttpStatus.*
class AuthorController {
AuthorService authorService
// ...
def someNumber() {
render "The Number Is ${authorService.someNumberFromImportService}"
}
}
向该someNumber
动作发送请求将验证ImportService
已注入AuthorService
和AuthorService
已注入AuthorController
。 / p>
$ curl http://localhost:8080/author/someNumber
The Number Is 42
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。