java - 在 Spring Boot 中,在哪里放置调用 REST API 和修改实体的方法

标签 java spring spring-boot architecture

我最初的问题可能不够具体,但我会尽力提供更多细节。

我正在构建一个 Spring Boot 应用程序,用于调用 Facebook Graph API 和 News API。到目前为止我的结构有:

.
└── com
    └── psyonik
        └── FBAccess
            ├── config
            │   └── SecurityConfig.java
            ├── controller
            │   └── HomeController.java
            ├── dao
            ├── entity
            │   ├── Feed.java
            │   ├── Paging.java
            │   ├── Post.java
            │   └── User.java
            ├── FbAccessApplication.java
            └── service
                └── NewsLoaderService.java

刚才的 Controller 是一个简单的测试 Controller ,我在其中检查对 Graph API 发出的请求的输出。配置保存 OAuth2 Facebook 登录的安全配置,DAO 文件夹最终将保存将响应保存到数据库的存储库,实体文件夹保存代表响应对象的实体,服务是“业务逻辑”应该所在的位置.

现在,我直接在 Controller 中调用 Graph API。理想情况下,这些调用应该在哪里进行,例如在应用程序的哪个部分?

如果 Service 文件夹包含一个 FacebookAPIService 类,该类调用 Graph API,构建一个 Feed 对象并返回一个项目列表,然后在 Controller 中调用该类的方法而不是进行调用,在 Controller 中构建对象等?

我知道在 DAO 文件夹中我将保留我的 JpaRepositories,然后在 Service 文件夹中我将有一个 FacebookService 和一个 FacebookServiceImpl,它们将保存与数据库通信的方法,但我想澄清该服务是否也可以保留对图形 API 的调用。

我的主要问题是,在 Spring Boot 应用程序中调用 API、从 DB 写入/读取数据、生成数据并将其动态显示到基于 API/DB 的网站上,如何你会构造这个吗?

为了进一步补充,来自 Graph API 的响应将用于创建对新闻 API 的新调用(例如“用户 A 在 11 月 5 日发布了一些内容,11 月 5 日在半岛电视台发布了哪些新闻文章然后将两个响应组合成一个新类,然后调用该类并将其显示在页面上”)。我可以在 Controller 中进行所有这些调用......但这很糟糕。

最佳答案

这些通常称为服务。因此,创建一个服务包并将它们放入其中。如果有多个服务与同一事物相关,您也可以将它们分组到那里。因此,如果您发现需要更多逻辑上处理不同操作的 FB 相关服务,那么您可以将它们放在不同的服务中,但都在 services.facebook 下,例如: services.facebook.FacebookAuthService.java adn services.facebook.FacebookGraphService.java

关于java - 在 Spring Boot 中,在哪里放置调用 REST API 和修改实体的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59607779/

相关文章:

java - Spring Security 注解 @EnableWebSecurity 在 Spring MVC 项目中不起作用

spring - 将环境变量传递给 DOCKER Spring Boot

java - 如何在 Spring Boot Rest Interface 中正确划分业务层和数据层

java - 显示 MySQL 数据库中保存的消息

java - 没有这样的字段错误: MARGIN using ZXing library

java - log4j 与 System.out.println - 记录器的优势?

java - 电脑发ems短信到手机

java - JFormattedTextField 未正确清除

Java io.jsonwebtoken.MalformedJwtException : Unable to read JSON value:

java - 创建类路径资源中定义的名称为 'entityManagerFactory' 的 bean 时出错(初始化方法调用失败)