Java 使用注释的泛型方法调用
我正在创建一个web应用程序,并在其中注入一个Java 使用注释的泛型方法调用,java,methods,annotations,invoke,Java,Methods,Annotations,Invoke,我正在创建一个web应用程序,并在其中注入一个SystemManager接口。我的所有业务逻辑都在它后面,页面只需要从它请求数据。我想创建一个通用实现,它将获得一个方法签名,并基于注释在系统中调用正确的方法 这个接口的实现就像一个门面模式——它只调用不同对象上的方法 目前的实施是 SystemManager.java SystemManagerImpl.java 但是我想用一些通用的解决方案来代替它,比如 SystemManager.java SystemManagerImpl.java 我认为
SystemManager
接口。我的所有业务逻辑都在它后面,页面只需要从它请求数据。我想创建一个通用实现,它将获得一个方法签名,并基于注释在系统中调用正确的方法
这个接口的实现就像一个门面模式——它只调用不同对象上的方法
目前的实施是
SystemManager.java
SystemManagerImpl.java
但是我想用一些通用的解决方案来代替它,比如
SystemManager.java
SystemManagerImpl.java
我认为这是不可能的,但我仍然愿意接受建议。好吧,在组织问题时要避免的一件事是谈论你如何在一开始就不能组织问题。当鼠标悬停在问题标题上时,最开始的句子是可见的,应该包含有希望让人们决定点击的内容。此外,
genericMethodImpl()
实际上应该做什么还不清楚。您能否提供一个非通用示例,说明调用SystemManager.executeA()
时的行为应该是什么?可能会有帮助。我打电话给designwank。如何使代码更好地将委派目标移动到接口?每个方法只需重复一次方法名称即可保存。请记住,您的SystemManagerImpl
类仍然必须从其接口实现所有方法。(除非您使用动态代理,它只是在事物的顶部添加了另一个神秘的层。)此外,使用facade的意义不在于选择方法被委托的位置取决于实现吗?将这些信息放入界面似乎违反了模式的目的。如果你的SystemManager是一个庞大的上帝类,包含你应用程序的所有业务方法,并且它所做的只是委托给其他服务,那么你最好将其完全移除,并将它委托给的服务直接注入你的控制器。
void executeA();
void executeB();
void executeA(){
SystemA.exectueA();
}
void executeB(){
SystemB.exectueB();
}
@SystemA
void executeA();
@SystemB
void executeB();
void genericMethod(){
// based on the annotation of the method received I am calling correct System class and invoking correct method
}