代码之家  ›  专栏  ›  技术社区  ›  leafo

Java中url调度的动态类加载

  •  1
  • leafo  · 技术社区  · 16 年前

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

    从我的google上我发现似乎没有一种方法可以真正获得包中存在的类的列表(这是由于类如何能够以多种不同的方式加载)。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Edwin Dalorzo    14 年前

    我不确定我是否完全理解这个问题,因为它的模糊性,但这听起来与javaservlets已经做的非常相似。不是吗?

    @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 .