小编gre*_*wan的帖子

Spring Boot请求标头返回null值

我有一个spring boot项目,里面有一些Rest API.我有两个自定义标题命名request_datetenant分别.

我试图在拦截器中读取这些头的值,但它只读取值tenant并返回null request_date.

重要

  • 我使用过滤器来包装请求对象,因为我想稍后读取请求主体.
  • 有一个过滤器可以添加CORS标头.

当我在localhost上运行我的项目并调试代码时,我成功地读取了两个标头的值.

但是,当我在生产中部署我的应用程序并使用postman或其他客户端发出请求时,request_date标头的值始终读为null.

我不确定这似乎是什么问题.我正在使用Spring boot v1.5.10.RELEASEJDK 1.8

注意:

  • 我试图将标题重命名为input_date.但是,它仍然读为null.

以下是相关代码

TestInterceptor

public class TestInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        String requestDate = request.getHeader("request_date");
        String tenant = request.getHeader("Tenant");

        /*Perform some checks*/

        return super.preHandle(request, response, handler);
    }
}
Run Code Online (Sandbox Code Playgroud)

CorsFilter

public class ApiCorsFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse …
Run Code Online (Sandbox Code Playgroud)

java rest spring http spring-boot

9
推荐指数
2
解决办法
1613
查看次数

Docker 撰写等待数据库服务初始化

我有一个 Spring Boot 项目,我想使用 docker 对其进行容器化。我有几个连接到同一个 MySql 服务器的 Spring Boot 应用程序。

我的 spring 应用程序需要完全设置数据库(即要创建的所有表以及要在某些表中插入一些数据)才能启动。

我正在使用Docker版本18.09.0docker -compose版本1.23.1和 ubuntu 16.04 LTS


我有两个文件create.sqlinsert.sql,我用它们来初始化应用程序要使用的数据库。

我使用命令创建图像docker-compose.yml,它成功运行并创建图像。

我有以下问题。

  1. 我假设在使用 docker-compose 时,容器会在其所有依赖容器启动后立即启动。在我的 API 容器启动之前,有没有办法等待 mysql 服务器启动并准备好接受连接?

  2. 如果我选择为应用程序和 mysql 分别创建容器,而不使用 docker-compose,我如何确保我的应用程序连接到 mysql 容器?

  3. 有没有其他工具可以帮助我实现这一目标?

注意: 我曾尝试使用docker inspect <container_id>查找 mysql 容器的 IpAddress 并使用它进行连接,但效果不佳。


以下是我用来创建图像的文件。

docker-compose.yml 文件。

version: '3'

services:
  demo-mysql:
    image: demo-mysql
    build: ./demo-mysql
    volumes:
      - /mnt/data/mysql-data:/var/lib/mysql
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=root …
Run Code Online (Sandbox Code Playgroud)

mysql docker spring-boot docker-compose

6
推荐指数
1
解决办法
1万
查看次数

Spring引导延迟加载实体未加载所有属性

我有一个Spring Boot 2.1.13(Java 8)项目,其中MySQL 8.0.21包含mysql-connector-java version: 8.0.22以下类。

@Entity
@Table(name = "user")
@JsonIgnoreProperties({"type", "location", "hibernateLazyInitializer", "handler"})
public class User implements java.io.Serializable {
    private UserType userType;
    private Location location;
    private long id;
    private String name;

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public long getId() {
        return this.id;
    }

    public void setId(long id) {
        this.id = id;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "usertypeid")
    public UserType getUserType() {
        return this.userType; …
Run Code Online (Sandbox Code Playgroud)

java hibernate spring-data-jpa spring-boot mysql-8.0

5
推荐指数
0
解决办法
775
查看次数