繁体   English   中英

动态类加载,用于Java中的URL调度

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM