如何在Spring MVC无状态应用程序(没有DB)中实现Service层?

时间:2017-03-21 14:13:15

标签: java spring spring-mvc model-view-controller

有一个应用程序接收一些输入参数,进行一些计算和返回结果(如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)并返回结果,我们会说squareperimeter。计算该值的算法是:

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应用程序中实现此类设计以实现最佳可用性,灵活性,可测试性,可伸缩性和代码可读性的最有效方法是什么?

0 个答案:

没有答案