gpt4 book ai didi

java - Java 中 URL 调度的动态类加载

转载 作者:行者123 更新时间:2023-12-01 05:53:51 25 4
gpt4 key购买 nike

我正在尝试一个小框架,其中在类中定义了一堆操作。我想编写一个 url 调度程序,它将根据匹配操作类中指定的 url 模式来调用相关操作。我想避免在调度程序类本身中创建所有可用操作的冗余列表,而是让它在程序启动时动态加载操作的实例。

我最初认为我可以将所有这些操作放在一个特定的包中,然后让我的调度程序在该包中搜索实现操作接口(interface)的所有类,并将它们加载到准备调用的操作实例列表中。

通过谷歌搜索,我发现似乎没有办法真正获取包中存在的类的列表(由于类能够以多种不同的方式加载)。

所以我的问题:这实际上可能吗?我将如何去做?但也许这个要求太过分了,这真的是个好主意吗?我还可以采取哪些其他方法,还有其他人在 java 中对类进行动态分派(dispatch)的示例吗?

最佳答案

由于问题含糊不清,我不确定我是否完全理解这个问题,但这听起来与 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 的集合。

关于java - Java 中 URL 调度的动态类加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3718634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com