小编puh*_*let的帖子

在 Spring Boot 应用程序中提取 docker 秘密而不是使用属性文件

我正在 docker swarm 堆栈上运行 spring boot 应用程序,并且想使用 docker 密钥作为令牌密钥、api 密钥等...创建密钥并使其在我正在运行的 docker 容器中可用是没有问题的以下撰写文件:

version: "3.7"
services:
  app:
    image: myimage
    environment:
      tokenSecret: /run/secrets/tokenSecret
      apiKey: /run/secrets/apiKey
    secrets:
      - tokenSecret
      - apiKey

  frontend:
    .....

  db:
    .....

secrets:
  tokenSecret:
    external: true
  apiKey:
    external: true
Run Code Online (Sandbox Code Playgroud)

这些秘密是由printf some_secret | docker secret create tokenSecret -

在使用 docker Secret 之前,我将属性存储在我的application.properties文件中:

tokenSecret: some_secret
apiKey: some_key
Run Code Online (Sandbox Code Playgroud)

并可以通过以下方式访问它们:

@Component
public class AppProperties {

    private Environment environment;

    @Autowired
    public void setEnvironment(Environment environment) {
        this.environment = environment;
    }

    public String getTokenSecret(){ …
Run Code Online (Sandbox Code Playgroud)

spring docker-swarm docker-secrets

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

使用流而不是嵌套的for循环

我目前正在学习Java 8流。我有一个整数的列表,从1到1000的值现在,我想创建整数,其中每个元素是的每个元素相乘的结果的新列表编号列表与对方元素号码列表。

以下代码可以完成这项工作:

        List<Integer> numbers = IntStream
                .range(1,999)
                .mapToObj(Integer::valueOf)
                .collect(Collectors.toList());

        List<Integer> products = new ArrayList<>();
        for (Integer i : numbers) {
            for (Integer j : numbers) {
                products.add(i*j);
            }
        }
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以通过使用流来避免嵌套的for循环?

java nested-loops java-8 java-stream

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