有一个应用程序接收一些输入参数,进行一些计算和返回结果(如Web服务),没有持久层。以下是我需要的一个非常简单的例子。
假设我在模型层中有一个实体Circle
:
package com.example.model;
public class Circle {
private double radius;
// constructor, getter and setter
}
controller 层中的CircleController
:
package com.example.controller;
// imports
@Controller
public class CircleController {
@RequestMapping(value = "/circle")
public String circleDetails(Model model) {
model.addAttribute("circle", new Circle());
return "circle_form";
}
@RequestMapping(value = "circleResult", method = RequestMethod.POST)
public String calcCircleDetails(Circle circle, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "circle_form";
}
return "circle_result";
}
}
某些视图应用会接受来自用户的参数(在这种情况下仅为radius
)并返回结果,我们会说square
和perimeter
。计算该值的算法是:
public static double calculateSquare(Circle circle) {
return Math.PI * circle.getRadius() * circle.getRadius();
}
public static double calculatePerimeter(Circle circle) {
return 2 * Math.PI * circle.getRadius();
}
遵循最佳实践,我希望保持结构清洁并由所有逻辑层(例如,数据库,dao,服务,控制器等)分隔。
我想在控制器和模型之间添加服务层,例如com.example.service.CircleService
。
如果我有一个持久层,我会实现存储库层,将CircleRepository
对象注入服务层并使其成为我的业务逻辑,并且最后将此CircleService
对象注入我的控制器层。但在这种情况下,事情应该更容易。
在Spring MVC应用程序中实现此类设计以实现最佳可用性,灵活性,可测试性,可伸缩性和代码可读性的最有效方法是什么?