0

在我的 Spring 控制器中,我从服务接收项目列表,然后使用控制器中的自定义代码创建一个新的过滤列表,该列表是从服务返回的列表的子集。

我不认为这个过滤代码应该发生在控制器中?

这是我的控制器:

    @Controller
    public class MyController {
    @Autowired
    private MyService myService;

        @RenderMapping
        public String getValues(ModelMap modelMap){

            List<String> = myService.getNewValues();


            List<String> filteredList = ......
            /**
                Code here to process the List and convert it to
                specific List
            */
            modelMap.addAttribute("values", filteredList);
        }
}

过滤是否应该在服务实现层进行?

因此,myService.getNewValues();我应该使用一种过滤结果的新方法而不是:myService.getNewFilteredValues();

注意:该方法myService.getNewFilteredValues()将是一个新方法,并且将包含与中指定的过滤代码相同的代码MyController

4

2 回答 2

0

就我个人而言,我会公开myService.getValues();并让服务对调用者隐藏过滤和其他逻辑。

于 2013-02-08T11:52:55.633 回答
0

如果过滤是业务逻辑的一部分,我会将其置于服务级别。向 Service 添加一个方法,getFilteredValues()该方法在 tunr 中调用getValues()

UPD:如果它是控制器特定的逻辑(一些技术过滤,例如减少传输的数据量),则将其留在控制器级别。

于 2013-02-08T12:57:03.570 回答