将文件控制器放在spring应用程序中的位置

时间:2017-02-03 05:03:39

标签: java spring spring-mvc spring-boot spring-batch

所以我已经研究过弹簧应用的不同层次,到目前为止我的第一个弹簧应用程序,我认为我做得非常好。我很困惑在哪里放一个FileController类。它可能根本不是一个控制器,而是更多的服务,我不确定。也许这只是一个坏主意,我应该真正使用类似Spring批次的东西。我只是觉得我不需要那种类型的可扩展性。我认为我可能做的最复杂的事情是读取和写入最多5,000行的excel文件。我下面的文件控制器将扩展为读取和写入文本和.xls文件。它应该是一个控制器并保留在spring mvc Web应用程序的控制器目录中,还是应该是服务并位于服务目录中,还是应该是bean和其他目录?文件控制器只能由一个服务对象访问,该服务对象将由Spring MVC控制器通过post或get请求调用。我认为我的缺乏经验真的在这里闪耀。

基本上我应该使用哪个注释:@ Controller,@ Bean,@ Service?

我读到@Controller注释主要仅用于请求映射。但是,拥有非基于Web的控制器是有意义的。

我应该只使用Spring Batch吗?

类示例

public class FileController {

     List<String> readFile(String filename) { //some impl }
     String readFile(String filename) { //some impl }    

     void writeFile(List<String> content) { //some impl }
     void writeFile(String content) { //some impl }

     void close() { //some imple }  

}

我还考虑过只是在使用它的方法中添加读取和写入文件,但我认为这是一个糟糕的方法,因为我有可能在将来需要相同的逻辑,DRY。

1 个答案:

答案 0 :(得分:3)

@Controller注释用于将方法映射到URI和HTTP mehtod的bean。这种豆通常位于网络层的顶部。

由于您的bean无法通过网络访问,因此无法@Controller。从我的意见来看,这是一项服务。因此,只需将其重命名为FileService,然后使用@Service进行注释。