在请求处理期间,我需要加载很多实体(两种)。也许4或5千。其中大多数是从二级缓存提供的。问题是依赖注入,它应用于杀死应用程序性能的每个域类。
Profiler显示瓶颈是 org.codehaus.groovy.grails.plugins.web.api.ControllersDomainBindingApi.autowire ,它调用 GrailsMetaClassUtils.invokeMethodIfExists 。
我尝试从 Controller 和 Service 类加载实体。结果是一样的。
是否可以针对特定情况或类禁用此不必要的 DI 功能?
我的Grails版本 2.3.11 。
Java 1.8
答案 0 :(得分:0)
您是否尝试过使用显式延迟抓取或批量抓取?您可以查看official docs上的示例和进一步说明。
顺便说一下,通常最好只在内存中存储这些大集合的ID并在处理它们时逐个加载它们(以避免在获取对象和处理它们之间可能出现的不一致)答案 1 :(得分:0)
您可以在<ng-container *ngIf="data">
<child1></child1>
<child2></child2>
</ng-container>
(适用于Grails 3)或grails-app/conf/runtime.groovy
(适用于使用GORM 5/6的Grails 2)中使用以下配置在较新版本的Grails中禁用依赖项注入:
grails-app/conf/Config.groovy