【问题标题】:Where to place a file controller within a spring application在 spring 应用程序中放置文件控制器的位置
【发布时间】:2017-06-20 09:42:20
【问题描述】:

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

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

我读到@Controller 注解主要仅用于请求映射。但是拥有不基于网络的控制器是有意义的。

我应该只使用 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。

【问题讨论】:

  • 为什么不使用@Component?

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


【解决方案1】:

@Controller 注解用于将方法映射到 URI 和 HTTP 方法的 bean。这样的 bean 通常位于 web 层的顶部。

由于您的 bean 不会从 Web 访问,因此不能是 @Controller。在我看来,这是一项服务。所以只需将其重命名为FileService 并使用@Service 进行注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2011-05-09
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    相关资源
    最近更新 更多