[英]Dynamic class loading for url dispatching in Java
我正在尝试一个小框架,其中在类中定义了一堆动作。 我想编写一个URL调度程序,该调度程序将根据匹配在动作类中指定的URL模式来调用相关动作。 我想避免在调度程序类本身中列出所有可用操作的冗余列表,而是让它在程序启动时动态加载这些操作的实例。
最初,我认为可以将所有这些动作放在特定的程序包中,然后让调度程序在该程序包中搜索实现该动作接口的所有类,并将它们加载到准备被调用的动作实例列表中。
从我的谷歌搜索中,我发现似乎没有一种方法可以真正获取程序包中存在的类的列表(由于类能够以多种不同方式加载)。
所以我的问题是:这实际上可行吗,我将如何解决? 但这也许要问的太多了,这是否是个好主意? 我还可以采用什么其他方法?有人在用Java对类进行动态调度吗?
由于不确定性,我不确定我是否完全理解了这个问题,但这听起来与Java Servlet已经完成的工作非常相似。 是不是
@WebServlet(name = "Action1",urlPatterns = {"/actions/Action1"})
public class SampleServlet extends HttpServlet {
//...
}
那对你有用吗?
另外,您可以使用类似Google Reflections的库来发现所有带注释的类:
@Action(url="/actions/one.do")
class MyAction {
public void execute(){
//..
}
}
例如:
Reflections reflections = new Reflections("com.jedi.academy");
Set<Class<?>> annotated = reflections.getTypesAnnotatedWith(Action.class);
这会让我得到一个包含MyAction.class
的集合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.