gpt4 book ai didi

java - GWT RequerstFactory - 从实体提取代码到服务定位器

转载 作者:行者123 更新时间:2023-12-01 12:58:42 26 4
gpt4 key购买 nike

假设我有一个实体“MyUser”,我不想将所有逻辑存储在其中。据我了解文档,我可以将逻辑添加到服务定位器中。我在请求上下文中链接了服务定位器:

@Service(value = MyUser.class, locator = MyServiceLocator.class)
public interface MyUser extends RequestContext {

InstanceRequest<MyUserProxy, Void> setName(String name);

Request<Void> changePasswordAndSendMail(String password);

}

并像这样定义定位器:

public class MyServiceLocator implements ServiceLocator {
@Override
public Object getInstance(Class<?> clazz) {
try {
return clazz.newInstance();
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}

public static void changePasswordAndSendMail(String password){

// Do something
}


}

但是编译器提示:

Could not find domain method similar to myPackage.MyUser changePasswordAndSendMail(java.util.String)

有没有办法从实体中提取逻辑?

最佳答案

如果你希望你的逻辑在 MyUser 之外,然后只需更改 @Service 的值到具有该逻辑的类(我认为问题中的 @ProxyFor 是您的错误)。

如果该类上的方法不是 static那么你需要一个ServiceLocator返回该类的一个实例。服务定位器本身除了定位包含服务方法的服务之外,还执行其他任何操作。

从方法为 static 的状态迁移在MyUser ,只需创建另一个类,移动static那里的方法(当然除了 findMyUser 方法)并更改您的 @Service指向新类。

请注意InstanceRequest方法仍然调用@ProxyFor指向的类的实例方法。代理上的注释被引用为 InstanceRequest 的第一个类型参数。在您的示例中,setName需要是 MyUser 上的实例方法(假设 MyUserProxy@ProxyFor(MyUser.class) 注释)

关于java - GWT RequerstFactory - 从实体提取代码到服务定位器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23680521/

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