小编use*_*379的帖子

在本地计算机上运行 Docker 容器时,“日志记录系统无法使用‘null’的配置进行初始化”

我有一个简单的 Spring Boot API 项目,当我在本地计算机上执行可启动 jar 文件或 Google Kubernetes Engine 上的 docker 映像时,该项目运行良好,但在docker run本地计算机上使用时会发出错误。我像这样构建并执行了图像:

docker build -t foo .
docker run -p 8080:8080 -e SPRING_PROFILES_ACTIVE=local foo
Run Code Online (Sandbox Code Playgroud)

这是错误:

Logging system failed to initialize using configuration from 'null'
java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.joran.spi.Interpreter@15:14 - RuntimeException in Action for tag [appender] java.lang.IllegalArgumentException: A project ID is required for this service but could not be determined from the builder or the environment.  Please set a project ID using the …
Run Code Online (Sandbox Code Playgroud)

spring logback docker google-cloud-platform dockerfile

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

分层 REST API 与规范化 REST API

首先,我想解释一下我所创造的Hierarchical REST API和的含义。Normalized REST API

  • 分层 REST API
    • 请求URL:可以使用具有多种类型内容的层次结构。(例如http://www.example.com/customers/12345/orders
    • 响应体:可以包含所有请求的内容,没有任何遗漏,包括其他相关数据类型(例如acustomer包含an order
      • 例如http://www.example.com/customers/12345
{
  "name": "John Doe",
  "orders": [{
      "id": 1,
      "price": 10,
      "delivered": true
    }, {
      "id": 2,
      "price": 11,
      "delivered": false
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)
  • 标准化 REST API
    • 请求 URL:禁止使用 URL 的层次结构。
      • 不好
        • http://www.example.com/customers/12345/orders
        • http://www.example.com/customers/12345/orders/1
        • http://www.example.com/customers/12345/orders?accepted=true
      • 好的
        • http://www.example.com/customers
        • http://www.example.com/customers?firstName=John
        • http://www.example.com/customers/12345
        • http://www.example.com/orders/1
    • 响应正文:包含所请求内容类型的所有内容。如果有其他类型相关,则只返回该类型的ID。
      • 例如http://www.example.com/customers/12345
{
  "name": "John Doe",
  "orderIds": [1, 2]
}
Run Code Online (Sandbox Code Playgroud)

我认为这两种方法都有各自的优点和缺点

  • 分层 REST API
    • 优点
      • 可以在单个请求中获取所有必需类型的内容(例如来自的客户、订单、地址http://www.example.com/customers/12345
    • 缺点 …

rest url uri

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

如何使用 Spring Data JPA(Hibernate) 跨映射表过滤关联实体?

有没有办法在中间实体(映射表)中使用@OneToMany和过滤软删除的多对多关联@ManyToOne

product并且product_option_group是 N:M 关系。我正在使用该disabled_datetime列实现软删除,并希望ProductOptionGroupProduct实体中过滤一个集合。这篇文章正在使用@ManyToMany@Where实现这一目标。我跟着,它工作(禁用product_option_groups 被过滤)。需要注意@WhereProductOptionGroup类。

// `product` <-> `product-product_option_group` <-> `product_option_group`

@Entity
@Table(name = "product")
public class Product implements Serializable {
    ...

    @ManyToMany
    @JoinTable(name = "product-product_option_group",
            joinColumns = @JoinColumn(name = "product_id"),
            inverseJoinColumns = @JoinColumn(name = "product_option_group_id"))
    private final Set<ProductOptionGroup> productOptionGroups = new HashSet<>();

    ...
}

@Entity
@Table(name = "product_option_group")
@Where(clause = "disabled_datetime is null")
public …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa soft-delete spring-data-jpa spring-boot

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

Spring MVC:如何从返回String的控制器方法单元测试Model的属性?

例如,

package com.spring.app;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(final Model model) {
        model.addAttribute("msg", "SUCCESS");
        return "hello";
    }

}
Run Code Online (Sandbox Code Playgroud)

我想使用JUnit 来测试model其属性及其值home().我可以改变返回类型以ModelAndView使其成为可能,但我想使用String它因为它更简单.但这不是必须的.

无论如何都要检查model而不改变home()返回类型?或者它无法帮助?

java junit spring unit-testing spring-mvc

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

什么时候可以使用Enum的名字()

变量的名称可以更改,不应影响逻辑.但是name()Enum中的方法返回一个常量名称作为值,因此它可以破坏现有代码.我应该避免使用name()吗?

例如,

public enum Example1 {FOO, BAR}
Run Code Online (Sandbox Code Playgroud)

重构FOO名称FOO2将制动Example1.FOO.name().equals("FOO").

public enum Example2 {
    FOO("FOO"),
    BAR("BAR");

    String code;

    private Example2(final String code) {
        this.code = code;
    }

    public String getCode() {
        return code;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,更改FOO名称FOO2将不会制动Example2.FOO.getCode().equals("FOO").

java enums anti-patterns

3
推荐指数
1
解决办法
117
查看次数

为“在首尔运行的 E2 实例核心”付费,但没有虚拟机

我正在为“在首尔运行的 E2 实例核心”付费。账单报告显示相关服务是“Compute Engine”,但没有从 Compute Engine 运行的虚拟机实例。我无法追踪账单的原因。

不确定是否相关,但我创建了 4 个 Cloud Run 服务,具有 0 个最小实例自动扩展设置,每天运行时间可能为 0~5 分钟。但“在首尔运行的E2实例核心”的使用量是7天84小时。所以我认为这不是原因。

为什么我要为“在首尔运行的 E2 实例核心”付费?

7天的账单报告

Compute Engine 虚拟机实例列表为空

google-compute-engine google-cloud-platform google-cloud-billing

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

@Value 可以读取,但 @ConfigurationProperties 不能

我正在尝试读取这样的 yml 文件。

order:
  foo: 5000
  bar: 12
Run Code Online (Sandbox Code Playgroud)

我可以用 来阅读它@value。(顺便说一句,我正在使用龙目岛)

@Component
@Data
public class WebConfigProperty {

    private Integer foo;
    private Integer bar;

    public WebConfigProperty(@Value("${order.foo}") @NonNull final Integer foo,
            @Value("${order.bar}") @NonNull final Integer bar) {
        super();
        this.foo = foo;
        this.bar = bar;
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用,@ConfigurationProperties因为 yml 文件会变得更加复杂。但它不适用于@ConfigurationProperties.

@Component
@ConfigurationProperties("order")
@Data
public class WebConfigProperty {

    @NonNull
    private Integer foo;
    @NonNull
    private Integer bar;
}
Run Code Online (Sandbox Code Playgroud)

我还添加@EnableConfigurationProperties了一个配置类。配置中的所有注释都是这样的。

@SpringBootConfiguration
@EnableConfigurationProperties
@EnableAutoConfiguration(exclude = { ... })
@ComponentScan(basePackages = …
Run Code Online (Sandbox Code Playgroud)

spring yaml annotations javabeans spring-boot

0
推荐指数
1
解决办法
2679
查看次数