根据Grails API,我们可以通过GrailsApplication检索所有域类定义
import org.codehaus.groovy.grails.commons.ApplicationHolder as AH
AH.application.domainClasses
我在src / groovy下定义了类,并且想要做同样的事情。我尝试使用以下代码,但徒劳无功
import org.codehaus.groovy.grails.commons.ApplicationHolder as AH
AH.application.allClasses
根据Grails API,对getAllClasses的调用应返回Grails类加载器加载的所有类
Class [] getAllClasses() 检索由Grails类加载器
加载的所有java.lang.Class实例
我错过了什么
答案 0 :(得分:3)
任何Java或Groovy代码都可以放在src目录中,而不必与Grails集成。 Grails类加载器仅加载Grails特定的类,例如grails应用程序在运行时知道的插件,控制器和域类。为了找到位于src目录中的类,您需要知道您感兴趣的包名称,然后遍历该包中包含的所有内容。
答案 1 :(得分:3)
。 好吧,' src'没有在grails classLoader中注册。但是你可以使用"在上下文类加载器"使用一行代码(Java Style)来轻松获取这些类
Class fetchedClass = Class.forName(
"Class Full Name Here",
true,
Thread.currentThread().getContextClassLoader()
)
。
多数民众赞成...... :)全部完成!!容易。
。
。
获取课程的示例" com.myPackage.dto.AddressDTO" 我们会这样做:
示例:获取课程" com.myPackage.dto.AddressDTO"
Class fetchedClass = Class.forName(
"com.myPackage.dto.AddressDTO",
true,
Thread.currentThread().getContextClassLoader()
)