Java REST服务项目结构
我和一位同事在做一个项目,他告诉我在创建rest服务时应该创建3个级别。有人能解释一下这是否是“正常”的,以及我是否以正确的方式使用它吗?他从未向我解释过原因,几周后就离开了公司 第一级:资源 我想这就是你捕捉请求获取、发布、放置等的地方 第二级:服务 我能理解这里发生的计算吗 第三级:存储库Java REST服务项目结构,java,spring-boot,package-structuring,Java,Spring Boot,Package Structuring,我和一位同事在做一个项目,他告诉我在创建rest服务时应该创建3个级别。有人能解释一下这是否是“正常”的,以及我是否以正确的方式使用它吗?他从未向我解释过原因,几周后就离开了公司 第一级:资源 我想这就是你捕捉请求获取、发布、放置等的地方 第二级:服务 我能理解这里发生的计算吗 第三级:存储库 public double findBonusById(long id) { int level = employeeRepository.findLevelById(id); double initia
public double findBonusById(long id) {
int level = employeeRepository.findLevelById(id);
double initialBonus = 2563;
return level * initialBonus;
}
这就是他把所有与
数据库
e、 g.假设我们有一个属性为“级别”的实体“员工”。根据你的级别,你会得到不同的奖金。我们想计算奖金并通过REST服务返还
资源方法的外观如下所示:
@GET
@Path("/id/{id}")
@Produces(MediaType.APPLICATION_JSON)
public double findBonusById(@PathParam("id") long id) {
return employeeService.findBonusById(id);
}
public double findBonusById(long id) {
int level = employeeRepository.findLevelById(id);
double initialBonus = 2563;
return level * initialBonus;
}
public int findLevelById(long id) {
return getEntityManager().createNamedQuery("Employee.findLevelById").setParameter("id", id).getSingleResult();
}
服务方法将如下所示:
@GET
@Path("/id/{id}")
@Produces(MediaType.APPLICATION_JSON)
public double findBonusById(@PathParam("id") long id) {
return employeeService.findBonusById(id);
}
public double findBonusById(long id) {
int level = employeeRepository.findLevelById(id);
double initialBonus = 2563;
return level * initialBonus;
}
public int findLevelById(long id) {
return getEntityManager().createNamedQuery("Employee.findLevelById").setParameter("id", id).getSingleResult();
}
存储库方法的外观如下所示:
@GET
@Path("/id/{id}")
@Produces(MediaType.APPLICATION_JSON)
public double findBonusById(@PathParam("id") long id) {
return employeeService.findBonusById(id);
}
public double findBonusById(long id) {
int level = employeeRepository.findLevelById(id);
double initialBonus = 2563;
return level * initialBonus;
}
public int findLevelById(long id) {
return getEntityManager().createNamedQuery("Employee.findLevelById").setParameter("id", id).getSingleResult();
}
在你的例子中,这就是所谓的分层架构 处理请求的控制器
@GET
@Path("/id/{id}")
@Produces(MediaType.APPLICATION_JSON)
public double findBonusById(@PathParam("id") long id) {
return employeeService.findBonusById(id);
}
服务是控制器和存储库之间的通信层
public double findBonusById(long id) {
int level = employeeRepository.findLevelById(id);
double initialBonus = 2563;
return level * initialBonus;
}
业务层是可选的,取决于需求,您可以将所有业务逻辑都放在这一层中
double initialBonus = 2563;
return level * initialBonus;
存储库正如您所说,这是他放置所有与数据库连接的语句的地方
在你的例子中,这就是所谓的分层架构 处理请求的控制器
@GET
@Path("/id/{id}")
@Produces(MediaType.APPLICATION_JSON)
public double findBonusById(@PathParam("id") long id) {
return employeeService.findBonusById(id);
}
服务是控制器和存储库之间的通信层
public double findBonusById(long id) {
int level = employeeRepository.findLevelById(id);
double initialBonus = 2563;
return level * initialBonus;
}
业务层是可选的,取决于需求,您可以将所有业务逻辑都放在这一层中
double initialBonus = 2563;
return level * initialBonus;
存储库正如您所说,这是他放置所有与数据库连接的语句的地方
是的,Matthijs,这很正常。在构建任何与Web服务相关的项目时,人们更喜欢的是不同的分离层。即 控制员:-您的请求到达的地方 @得到 @路径/id/{id} @ProducesMediaType.APPLICATION_JSON 公共双人房findBonusById@PathParamid长id{ return employeeService.findbonusbydid; } 服务:-执行业务逻辑的地方 公共双findbonusbydlong id{ int level=employeeRepository.findLevelByIdid; 双倍初始奖金=2563; 回报水平*初始奖金; } 存储库:-与数据库通信的位置 public int findLevelByIdlong id{ 返回getEntityManager.createNamedQueryEmployee.findLevelById.setParameterid,id.getSingleResult; }
这些是人们通常遵循的一些标准,但是可以有更多的分离层。是的,Matthijs,这是正常的。在构建任何与Web服务相关的项目时,人们更喜欢的是不同的分离层。即 控制员:-您的请求到达的地方 @得到 @路径/id/{id} @ProducesMediaType.APPLICATION_JSON 公共双人房findBonusById@PathParamid长id{ return employeeService.findbonusbydid; } 服务:-执行业务逻辑的地方 公共双findbonusbydlong id{ int level=employeeRepository.findLevelByIdid; 双倍初始奖金=2563; 回报水平*初始奖金; } 存储库:-与数据库通信的位置 public int findLevelByIdlong id{ 返回getEntityManager.createNamedQueryEmployee.findLevelById.setParameterid,id.getSingleResult; }
这些是人们通常遵循的一些标准,但是可以有更多的分离层。适合你的级别的术语是。适合你的级别的术语是。你能解释一个业务层有用的场景吗?它似乎与服务层的作用相同。如果您有庞大的业务场景,则假设您有2000个业务记录的列表,并且需要通过基于数据对每个对象进行分组来对其执行不同的操作。在这种情况下,您在哪里执行该操作?在服务层让它变得一团糟?你能解释一个场景吗,在这个场景中,业务层会很有用?它似乎与服务层的作用相同。如果您有庞大的业务场景,则假设您有2000个业务记录的列表,并且需要通过基于数据对每个对象进行分组来对其执行不同的操作。在这种情况下,您在哪里执行该操作?在服务层让它变得一团糟?