我有一个 REST 服务,它在一个模块(包)中包含三个类 User.java -> Entity UserService.java -> REST 服务 UserValidation.java -> 实体的特殊验证器。服务器将实体发送到此验证器并获得验证结果(真或假):
User.java
@XmlRootElement(name = "User")
public class User {
private long id;
private String name;
private String surname;
private String patronymic;
/*Getters and Setters*/
}
UserService.java
public class UserServiceImpl implements UserService {
private UserDAO userDbDao = new UserDatabaseDAO();
@POST
@Path("/users/")
public Response addUser(User user) {
UserValidator userValidator = new UserValidator(user);
if (userValidator.isValid()) {
User newUser = userDbDao.createUser(user);
return Response.ok().type("application/xml").entity(newUser).build();
} else {
return Response.status(Response.Status.BAD_REQUEST).entity(userValidator.getErrorMessage()).build();
}
}
}
UserValidator.java
public class UserValidator {
private static final int MAX_SIZE_NAME = 50;
private static final int MIN_SIZE_NAME = 2;
private User user;
public UserValidator(User user) {
this.user = user;
}
但是现在,我需要将其拆分成单独的包。因为,如您所见,它们使用彼此的功能。例如UserService.java 就使用了这个UserValidator userValidator = new UserValidator(user);
我需要以某种方式连接这些包(OSGI 服务、ActiveMQ)。
在我看来,它的工作原理是这样的:
UserService 包从 REST 方法获取用户实体。
将所有用户字段(姓名、姓氏、父名)放入 ActiveMQ 队列(因为 UserValidator 包不知道用户实体是什么)。
UserValidator 包从队列中获取用户的字段并验证它们。
UserValidator 包将验证结果(真/假)放入队列。
UserService 包从队列中获取验证结果并将用户发送到 DAO。
但这只是一个概念。我错了吗?
通过捆绑包传递实体的最佳方式是什么?我应该怎么做?
九州编程
相关分类