我在默认包的目录中有一些.class
文件。每个文件都有一个类,该类有一个@Service注释,方法有一个@Operation注释。
我知道如何在运行时读取注释,但这些文件是 .class 文件,我不知道如何读取它们。
否则我想在 context.xml
文件中的路径中编写每个 Service
注释,并在 web.xml
文件中的 url-pattern 中编写每个操作运行 。我怎样才能做到呢?
最佳答案
如果您将目录中的类放入类路径中,那么您可以通过 ClassLoader API 轻松访问它们:
Class<?> clazz = this.getClass().getClassLoader().loadClass(className);
现在的问题是您不知道类名,并且您基本上想扫描所有类名。因此,您可以使用可用的库之一。例如,Guava提供API通过ClassPath扫描类路径辅助实用程序:
ClassPath classPath = ClassPath.from(this.getClass().getClassLoader());
for (ClassPath.ClassInfo classInfo : classPath.getTopLevelClasses()) {
Class<?> clazz = classInfo.load();
// process annotations here
}
关于java - 如何在运行时确定servlet路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25512055/