又一个新冠肺炎日快乐。当我使用生成全部时,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