小编use*_*708的帖子

为什么Spring在一台机器而不是另一台机器上获得循环依赖性问题?

我在使用基于Spring Data的应用程序在我的环境中运行时遇到了问题.我正在运行Debian,但我的同事正在使用Mac或Ubuntu.我的环境变量中没有任何特殊设置,并且使用与其他版本完全相同的Java版本.

我在日志中看到过这一点,这表明它是一个循环引用问题导致实例化失败:

nested exception is
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'flyway.CONFIGURATION_PROPERTIES':
Initialization of bean failed;
...
nested exception is
org.springframework.beans.factory.BeanCurrentlyInCreationException:
Error creating bean with name 'flyway': Requested bean is currently in
creation: Is there an unresolvable circular reference?
Run Code Online (Sandbox Code Playgroud)

所以问题似乎是飞路需要一些依赖,他们需要飞路.

问题是,为什么这只发生在我的环境而不是任何人?即使在内存中使用H2的测试中,我也看到了问题,因此不是我的数据库出错了.

是否有可能以某种方式混淆Spring自动装配,并尝试以错误的顺序执行操作,以便在尝试设置存储库时为null?

Spring是否有一个严重实现的拓扑排序用于排序依赖项?

为什么它会对我的环境造成不良影响?

类路径的排序会影响它的行为吗?

======================

应用程序不会以此错误开头:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contentItemRepository': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Repository interface must not be null on initialization!
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:175)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:127)
    at …
Run Code Online (Sandbox Code Playgroud)

java spring dependency-injection spring-data

29
推荐指数
3
解决办法
9266
查看次数

AWS Fargate ResourceInitializationError:无法拉取机密或注册表身份验证:拉取命令失败::信号:被杀死

用这个稍微扯掉我的头发......我正在尝试在公共子网的 VPC 中的 Fargate 上运行 Docker 映像。当我将此作为任务运行时,我得到:

ResourceInitializationError: unable to pull secrets or registry auth: pull
command failed: : signal: killed
Run Code Online (Sandbox Code Playgroud)

如果我通过 NAT 在私有子网中运行任务,它就可以工作。如果我在默认 VPC 的公共子网中运行它,它也可以工作。

我已经检查了这里的建议:

Aws ecs fargate ResourceInitializationError:无法提取机密或注册表身份验证

特别是,我设置了安全组以允许所有流量。还设置了网络 ACL 以允许所有流量。我什至对 IAM 权限非常开放,以尝试消除这种可能性:

任务执行角色有:

   {
        "Action": [
            "kms:*",
            "secretsmanager:*",
            "ssm:*",
            "s3:*",
            "ecr:*",
            "ecs:*",
            "ec2:*"
        ],
        "Resource": "*",
        "Effect": "Allow"
    }
Run Code Online (Sandbox Code Playgroud)

具有信任关系,允许 ecs-tasks 承担此角色:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

安全组是:

sg-093e79ca793d923ab All traffic All traffic …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-ecs amazon-ecr aws-fargate

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

在注释代码的 Subversion 视图时,IntelliJ 是否可以将用户 ID 映射到名称

我可以使用 VCS -> Subversion -> 注释,告诉 IntelliJ (12) 使用最后在特定行中检查的用户来注释代码行。在我目前工作的地方,这些用户 ID 只是数字和字母。有谁知道是否有办法让我输入从 ids 到更用户友好的开发人员名称的映射?也许是一个插件?

我知道有代码审查工具可以帮助我,JetBrains 或 Atlassian 或其他工具,但我们这里没有这些工具,并且获得新工具的批准是一个漫长的过程。如果我能做到以上几点,那对我会有很大帮助。

java svn intellij-idea

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

是否有命令行或 Maven 插件来优化/组织 Java 导入?

有一些插件可以使用来自 Maven 的 Eclipse 格式化程序来格式化代码,并且不难找到从命令行运行它的说明。但是,此格式化程序不会组织/优化导入语句。

我想这样做的原因是我已经生成了一些代码,使用了一个模板。预先确定需要哪些导入以及不需要哪些导入会很复杂,因此我最终导入了很多最终没有使用的东西。之后清理未使用的导入的格式化程序将巧妙地解决问题。

具体来说,我想自动删除未使用的导入,而不是从 IDE 中删除。我怎样才能做到这一点?

java import formatting

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

logback:异常堆栈跟踪之前的换行符,但不是其他情况?

如果我在日志记录模式中的异常堆栈跟踪之前放置一个换行符:

<Pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{36} %msg %n %rEx{short} %n</Pattern>
Run Code Online (Sandbox Code Playgroud)

然后打印一个额外的换行符,所以正常的日志语句最终在它们之间有空行。

如果我删除额外的换行符:

<Pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{36} %msg %rEx{short} %n</Pattern>
Run Code Online (Sandbox Code Playgroud)

然后堆栈跟踪不会从新行开始,使它们难以阅读。

任何人都可以想出一种方法让 logback 只在有堆栈跟踪时打印额外的换行符,否则不打印?

logback

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

有没有办法'脚本'一个git提交 - 只接受一些差异?

我已经应用了一些静态代码分析 - 并将所有Java包级别字段转换为protected.这大多是正确的,因为我忘了明确设置访问修饰符,并且受保护通常是我在那些情况下所追求的.

不幸的是,我应用的重构是IntelliJ弱化访问修饰符,它也改变了很多public - > protected,on constructors等等.

所以,一旦我有一个带有这样的语句的差异:

-int myField;
+protected int myField;
Run Code Online (Sandbox Code Playgroud)

-public MyConstructor()
+protected MyConstructor()
Run Code Online (Sandbox Code Playgroud)

有没有办法编写一个在提交期间运行的脚本,并且只允许上面的第一个例子,但没有第二个?我可以搞清楚脚本,我只是不确定如何运行它 - 它是一个预提交钩子吗?

如果它是一个预提交钩子,你怎么检查这样一个脚本中的diff并接受/拒绝它基于greped它的某些字符串?

git pre-commit

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

AWS Cognito getId“登录令牌无效。颁发者与提供者名称不匹配”

我已经使用 API“InitiateAuth”针对 Cognito 用户池进行了身份验证,并收到了一个 id 令牌:

{
   sub: "8aec..." ,
   aud:"2gr0fdlr647skqqghtau04vuct",
   iss:"https://cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q",
   ....
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试通过 API“GetId”获取 ID:

{
   AccountId: "345745834314"
   IdentityPoolId: "us-east-1:fb4d5209-33b1-46e2-923a-8aa206d5c7aa"
   Logins: {
      "cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q": "eyJr...." 
   }
}
Run Code Online (Sandbox Code Playgroud)

我已经设置了一个身份池,并正确地将 Cognito 用户池设置为提供者。但我总是得到响应表 getId:

“登录令牌无效。颁发者与提供者名称不匹配”

我还尝试将登录列表中的提供者名称更改为:

https://cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q

因此它与令牌在 iss 字段中的内容完全匹配,但这并不能解决问题,仍然是关于发行者与提供者名称不匹配的相同消息。

知道我在这里做错了什么吗?

amazon-cognito

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

Dropzone打开文件选择器两次

我已经设置了带有可点击元素的dropzone.单击该按钮会导致dropzone打开文件选择器两次,而不是仅打开一次,第二次在选择第一个文件后立即打开.

初始代码是:

Dropzone.autoDiscover = false;

$(document).ready(function(){

// Remove the template from the document.
var previewNode = document.querySelector("#template");
previewNode.id = "";
var previewTemplate = previewNode.parentNode.innerHTML;
previewNode.parentNode.removeChild(previewNode);

$("div#photo").dropzone({
    url: "/blackhole/",
    thumbnailWidth: 240,
    thumbnailHeight: 240,
    parallelUploads: 1,
    maxFiles:1,
    maxFilesize: 5,
    uploadMultiple: false,
    previewTemplate: previewTemplate,
    autoProcessQueue: true,
    previewsContainer: "#photoPreview", 
    clickable: ".fileinput-button",
    init: function() {
        this.on("maxfilesexceeded", function(file) {
            this.removeAllFiles();
            this.addFile(file);
        });
    }   
});
Run Code Online (Sandbox Code Playgroud)

页面元素是:

      <div class="table table-striped" class="files">

        <div id="photo">
          <div id="actions" class="row">
            <div class="col-lg-7">
              <button type="button" class="btn btn-success fileinput-button">
                <i class="glyphicon glyphicon-plus"></i>
                <span>Choose file...</span> …
Run Code Online (Sandbox Code Playgroud)

dropzone.js

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

如何使用 saltstack 添加包 repo 和密钥到 apt ?

我只是 SaltStack 的初学者。我可以看到有一个 pkgrepo 模块可用于设置包 repo 以便从中安装包。

https://docs.saltstack.com/en/latest/ref/states/all/salt.states.pkgrepo.html

给出的一个例子是:

base:
  pkgrepo.managed:
    - humanname: Google Chrome
    - name: deb http://dl.google.com/linux/chrome/deb/ stable main
    - dist: stable
    - file: /etc/apt/sources.list.d/chrome-browser.list
    - require_in:
      - pkg: google-chrome-stable
    - gpgcheck: 1
    - key_url: https://dl-ssl.google.com/linux/linux_signing_key.pub
Run Code Online (Sandbox Code Playgroud)

我不明白的是我把上面的代码放在哪里?我在 /srv/salt/top.sls 和其他状态的 .sls 文件中尝试过,但这是不对的。它是如何完成的?

debian apt salt-stack

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

使用“docker build”时如何获取主机的地址?

我需要在 docker 构建期间在 Dockerfile 中引用主机或主机网络,该怎么做?我想这样做,克隆一些 git 存储库,或者 scp 一些文件来设置图像。

克隆 github 存储库很容易,因为 docker 会为此解析 dns。但是,我的主机网络没有可用于正在构建的 docker 映像的 dns 条目。

事实上,我什至不知道主机的IP地址是什么,更不用说设置dns了。

docker

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