小编use*_*765的帖子

在Spring 4/Boot中完全集成加密属性

我们使用Jasypt来加密一些配置属性(数据库密码),但由于解密密钥存储在每个环境的文件系统中,我们必须进行一些手动@Bean配置以从文件加载密码,然后使用EncryptablePropertiesPropertySource.

因为它是如此手动,我们不得不@PostConstructWebApplicationConfig类中运行此代码并且(虽然这还没有发生),但是在数据源bean配置了对Environment- 给出空指针异常的调用之后,它会冒着加载这些代码的风险. @Lazy加载是一个选项,但显然这意味着我们将使用脆弱的配置,我们希望避免.

最终我们希望能够使用默认设置,classpath:application.properties因此不希望影响现有(默认)设置,但我们确实希望能够使用加密属性源作为Spring的完全替代,并使Spring加载在发生任何其他事件之前从文件中解密代码.有没有办法在应用程序启动和配置早期更紧密地集成加载加密属性?

spring jasypt spring-boot

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

在 Spring WebClient 中流式上传“POST”

我正在使用 WebClient 使用 HTTP 帖子上传(原始字节)数据流:

    final byte[] rawData = IOUtils.toByteArray(sourceInputStream);
    webClient.post()
             .uri(uri)
             .contentType(MediaType.APPLICATION_OCTET_STREAM)
             .bodyValue(rawData)
             .exchange()...
Run Code Online (Sandbox Code Playgroud)

我担心可能会使用大量内存,因为有时这些对象可能非常大(~200Mb),因此想直接从 InputStream 读取并作为流上传。

我试过:

 bodyValue(BodyInserters.fromResource(new InputStreamResource(inputStream))) 
Run Code Online (Sandbox Code Playgroud)

但有异常内容类型“application/octet-stream”不支持 bodyType=org.springframework.web.reactive.function.BodyInserters

所以我然后尝试删除标题,但数据随后被损坏。

有没有办法在不通过内存“缓冲区”rawData [] 的情况下流式传输数据?

谢谢

upload spring webclient inputstream

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

在使用CLI将模块添加到JBoss之前有没有办法检查?

在使用JBoss CLI调用添加之前,有没有办法检查模块是否尚未添加?

例如

module add --name=org.mysql --resources=/home/abc/drivers/mysql/MySQL5.jar



# Want to do similar check for module add
if (outcome != success) of /subsystem=datasources/jdbc-driver=org.mysql:read-resource
   # Add it...
end-if
Run Code Online (Sandbox Code Playgroud)

Reason尝试添加已存在的模块会导致错误.

jboss command-line-interface

6
推荐指数
2
解决办法
6217
查看次数

Gradle/Groovy属性

我想在每个构建机器(dev,ci,uat,...)上使用外部属性文件控制Gradle构建脚本中的'global'配置,并使用命令行参数指定文件名.

例如 gradle -DbuildProperties=/example/config/build.properties

我特别不想使用gradle.properties,因为我们已经使用这种方法的现有项目(例如)我们希望能够修改数据库URL和jdbc驱动程序而无需更改每个项目.

到目前为止已经尝试过: -

Properties props = new Properties() 
props.load(new FileInputStream("$filename")) 
project.setProperty('props', props) 
Run Code Online (Sandbox Code Playgroud)

哪个有效,但有一个弃用的警告,但我无法弄清楚如何避免这种情况.

还试过使用ConfigSlurper的groovy样式配置文件: -

environments {
    dev {
        db.security {
            driver=net.sourceforge.jtds.jdbc.Driver
            url=jdbc:someserver://somehost:1234/some_db
            username=userId
            password=secret
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是冒号和正斜杠会导致异常,我们不希望使用转义字符搞乱配置.

必须有一种不贬低的方式来做到这一点 - 任何人都可以提出"正确"的方式吗?

谢谢

configuration groovy properties gradle

5
推荐指数
2
解决办法
6238
查看次数

Grafana过滤未编制索引的ElasticSearch字段(零),因此它们不会显示在表格面板中

我们有一个表格,显示我们的服务中的警告计数,但我们对那些零的不感兴趣.

由于警告计数是未编入索引的数字(整数),因此我们不能将其作为过滤条件包含在内.如何从我们的仪表板中删除它们?

elasticsearch grafana

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

Terraform 官方 Docker 镜像看不到我的文件

我想使用官方 Hashicorp 映像来运行 Terraform,而不是手动安装。我已关注 dockerhub 上的文档,但没有任何有关如何在何处安装卷的详细信息 - 例如在当前目录中使用“main.tf”:

> docker run -i -t hashicorp/terraform:light init main.tf
Terraform initialized in an empty directory!

The directory has no Terraform configuration files. You may begin working
with Terraform immediately by creating Terraform configuration files.


> docker run -i -t hashicorp/terraform:light plan main.tf
stat main.tf: no such file or directory
Run Code Online (Sandbox Code Playgroud)

我在哪里安装文件?除了 dockerhub 页面之外,还有我还可以使用的文档吗?

docker terraform

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

Spring Boot Flyway迁移占位符

有人可以显示正确的格式以用于在Flyway迁移中使用application.properties配置。

我想在我的application.properties文件中使用数据源配置的用户名来授予数据库表的权限(使用Flyway进行数据库迁移,用户名最终会因环境而异),但是我找不到语法的示例。

示例application.properties:

#  Database
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/example_db
spring.datasource.username=example_db_application
spring.datasource.password=examplePassword1
Run Code Online (Sandbox Code Playgroud)

移民:

CREATE TABLE token
(
  id TEXT,
  value TEXT,
);

GRANT SELECT, INSERT, UPDATE, DELETE ON token TO ${spring.datasource.username};
Run Code Online (Sandbox Code Playgroud)

我尝试了各种迭代(flyway.placeholders.spring.datasource.username,尝试不指定前缀:spring.flyway.placeholder-prefix =),但是没有运气。

spring flyway spring-boot application.properties

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

用于插入的番石榴缓存侦听器

我们发现在Google Guava中AddListener补充它非常有用RemovalListener.

是否有一个合适的替代方案AddListener可以补充RemovalListener

java guava

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

创建新的工作区

Modeshape文档的7.1.6节说:“您的应用程序现在可以使用标准JCR 2.0 API创建和删除工作区。”

JCR 2.0文档说要使用Workspace.createWorkspace(String name)

如何使用此博文底部的代码来获取我的存储库的这一部分?

另外,如何获取存储库中已经存在的工作区列表?

谢谢

for (RepositoryFactory factory : ServiceLoader.load(RepositoryFactory.class)) {

    if (factory instanceof org.modeshape.jcr.api.RepositoryFactory) {
        org.modeshape.jcr.api.RepositoryFactory modeshapeRepositoryFactory = (org.modeshape.jcr.api.RepositoryFactory) factory;

        final Repositories repositories = modeshapeRepositoryFactory.getRepositories(JCR_CONFIG_FILE_URL);

        if (repositories != null) {

            Set<String> repositoryNames = repositories.getRepositoryNames();
            if (repositoryNames != null) {
                for (String repoName : repositoryNames) {
                    log.info(repoName);
                }
            }
        }
        else {
            System.out.println("repositories reference was null");
        }
    }

    try {

        repository = factory.getRepository(parameters);
        if (repository != null) {
            printRepoDetails(repository, parameters, factory);
            repositoryFactory = factory; // Keep …
Run Code Online (Sandbox Code Playgroud)

jcr modeshape

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

ansible-inventory --list 主机组命令行

我想(仅)从 ansible-inventory 获取主机组名称列表,但是我必须使用 grep 根据已知的组名称模式来修剪列表 - 例如

  • 干净的输出,但混乱的命令行,需要提前知道组名称模式:

ansible-inventory -i inventory/production --list --yaml | grep webserver_.*:$

  • 干净的命令行,不需要知道组名模式,但输出混乱:

ansible-playbook my-playbook.yml -i inventory/production --list-hosts

有没有一种干净的方法可以从库存中提取组名称?

示例hosts.yml:

# NGINX
webserver_1:
  hosts:
    ws1.public.example.com

webserver_2:
  hosts:
    ws2.public.example.com

webserver_2:
  hosts:
    ws2.public.example.com

# EC2 back-ends
backend_ec2_1:
  hosts:
    be1.internal.example.com

backend_ec2_2:
  hosts:
    be2.internal.example.com

backend_ec2_3:
  hosts:
    be3.internal.example.com
Run Code Online (Sandbox Code Playgroud)

[Ansible v2.9.7]

ansible ansible-inventory

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

为什么再次使用int?

我们几乎都在64位机器和JVM上,RAM很便宜,性能很少以低级JVM问题为中心.

那么为什么不是每个人都停止使用int并在Java和持久(数据库)存储中完全移动到64位长.

我知道我永远不会有2 ^ 64个用户,也不会有2 ^ 64种语言,如果我在零售帝国开设了2 ^ 64家商店,我目前还没有建立我认为我可以买自己的大陆并退休.

除了'您不需要64位数字来存储所有可能的宠物商店ID'之外,还有其他缺点吗?...?

java int types jvm long-integer

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