Grails Data Service 不能使用常规服务



又一个新冠肺炎日快乐。当我使用生成全部时,Grails为我创建了数据服务。我开始了解什么是数据服务。

我还有自己的服务供我的作者和书籍课程使用。我将我的服务命名为ImportService。 在数据服务将我的图书保存到数据库之前,我在导入服务中有一些方法来清理从 CSV 文件中读取的图书数据。我还按照说明将数据服务设置为抽象类。因此,我可以将自己的方法放在数据服务中。

由于作者有自己的作者服务,并且书籍有自己的书籍服务,我希望不同的数据服务访问我的导入服务中的方法。 因此,我不必多次复制和粘贴导入CSV代码。 因此,我将ImportService importService行放在 AuthorServie 类和 BookService 类中。这并不顺利。importService在数据服务类中始终为 NULL。 我用谷歌搜索这个问题。 他们说我不能向grails.gorm.services.Service注入另一个服务。

有一个帖子说要做豆子。 我是圣杯的新手。即使发布了代码,我也不知道他们在说什么。 我的部分背景是汇编语言,C和Pascal。 我的脑袋里充满了术语,如自上而下、子例程、库、地址和指针。 我不知道豆子是什么。

这就是它。 我想知道这是一个错误还是设计使然,您无法将服务注入 gorm 服务。

感谢您的"指针"。

请参阅 https://github.com/jeffbrown/tom6502servicedi 的项目。 该项目使用Grails 4.0.3和GORM 7.0.7。

https://github.com/jeffbrown/tom6502servicedi/blob/main/grails-app/services/tom6502servicedi/ImportService.groovy

package tom6502servicedi
class ImportService {
int getSomeNumber() {
42
}
}

https://github.com/jeffbrown/tom6502servicedi/blob/917c51ee173e7bb6844ca7d40ced5afbb8d9063f/grails-app/services/tom6502servicedi/AuthorService.groovy

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
}
}

https://github.com/jeffbrown/tom6502servicedi/blob/917c51ee173e7bb6844ca7d40ced5afbb8d9063f/grails-app/controllers/tom6502servicedi/AuthorController.groovy

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

$ curl http://localhost:8080/author/someNumber
The Number Is 42