小编Joe*_*oeG的帖子

ZooKeeper在WIndows上制作

目前,在Linux上使用ZooKeeper满足我们的初始需求.代码库是所有Java/Groovy.稍后,将需要支持Windows.但是,ZooKeeper文档支持的平台仅列出对Windows 32的"开发"支持:

Win32 is supported as a development platform only for both server and client.
Run Code Online (Sandbox Code Playgroud)

人们在Windows上成功运行ZK吗?有什么问题?

另外,64位Windows呢?有人这样做,你可以分享任何经验吗?

java groovy apache-zookeeper

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

在 Spring 中,'autowire = Autowire.NO' 有什么作用?

这个 Spring 文档中我知道当我使用 @Bean 时,默认值已经等同于:

@Bean(autowire = Autowire.NO)

(默认)没有自动装配。Bean 引用必须通过 ref 元素定义。对于较大的部署,不建议更改默认设置,因为明确指定协作者可以提供更好的控制和清晰度。在某种程度上,它记录了系统的结构。

我只是想了解这对我意味着什么。如果我的系统是 100% Java 配置并且没有 XML 配置,那么据我所知,当我使用 @Bean 时,“Autowire.no”没有任何影响。

编辑

“无影响”是指其他对此 bean 的 @Autowired 引用是自动装配的(在其他 Java Config 类中)。我怀疑这是因为在 Java Config 中没有明确定义“ref 元素”,因此此(默认)设置无效。

例子:

第一个配置:

package a.b.c;

@Configuration
public class AlphaConfig {

    @Bean(autowire = Autowire.NO)
    public AlphaBeanType alphaBean() {
        return new AlphaBeanType();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在第二个配置中:

package d.e.f;

import a.b.c.AlphaBeanType;

@Configuration
public class AnotherConfig {

    @Autowire
    private AlphaBeanType alphaBeanType;

    @Bean
    . . .
}
Run Code Online (Sandbox Code Playgroud)

我看到的是“alphaBeanType”总是在第二个配置类中自动装配 - 这似乎与文档冲突 …

configuration spring

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

Groovy - 接口中定义的方法可以有默认值吗?

如果在Eclipse/STS中输入以下内容(使用groovy):

interface iFaceWithAnIssue {
    def thisIsFine(a,b,c)
    def thisHasProblems(alpha='va')
}
Run Code Online (Sandbox Code Playgroud)

抱怨的唯一一行是尝试使用默认值的那一行.如果支持与否,我无法从codehaus网站告诉我.

IDE错误是:

Groovy:Cannot specify default value for method parameter 
Run Code Online (Sandbox Code Playgroud)

所以这让我觉得它不受支持.由于会有多个实现,我想在这里使用一个接口.我真的不需要接口中的默认值,但是如果实现类然后尝试默认此参数,则尝试完成接口契约时会出错.有什么办法吗?

groovy interface

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

TestNG能看到我的Spock(JUnit)测试结果吗?

需要让TestNG运行我的Spock测试,因为TestNG用于整个系统的其余部分.
由于TestNG支持运行JUnit测试,我试过这个:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="suiteTestName" verbose="1" junit="true">
    <test name="myTestName">
        <classes>
            <class name="mypackage.artifact.SomeArtifactSpecification" />
        </classes>
    </test>
</suite>
Run Code Online (Sandbox Code Playgroud)

所以这实际上完全运行了Groovy的'SomeArtifactSpecification'Spock单元测试.我可以从测试中看到一些I/O,但是因为我在Eclipse中运行,所以我使用调试器来验证所有测试是否正确执行.我的类路径上有TestNG-6.8.7和JUnit-4.10.问题是TestNG似乎并不知道它确实如此!这是最终输出:

===============================================
myTestName
Total tests run: 0, Failures: 0, Skips: 0
===============================================
Run Code Online (Sandbox Code Playgroud)

有谁知道是否有可能让TestNG识别这些测试?

其他详细信息 - 为Bounty添加

在下面的一条评论中,彼得表示这取决于TestNG正在做什么.我尽可能地调查了这一点.似乎Junit和TestNG都调用了Spock的Sputnik类第63行的'run'方法.但是,当直接从JUnit调用时,从JUnit4TestClassReference调用Sputnik.从TestNG调用时,从JUnitCore调用Sputnik.

所以问题仍然存在:如何让TestNG识别Spock的测试输出?如果我要长寿和繁荣,我真的需要知道!似乎答案可能是让TestNG与JUnit4TestClassReference一起运行,或者使用某种类型的聪明包装器来使TestNG这样做......

对于血淋淋的细节,我在下面发布了两个堆栈跟踪.第一个是从TestNG运行,它不起作用,第二个是直接运行Spock而没有TestNG.

来自TestNG的第一个堆栈跟踪:

org.testng.remote.RemoteTestNG at localhost:54288   
Thread [main] (Suspended (breakpoint at line 65 in ArtifactManagerSpecification))   
    ArtifactManagerSpecification.$spock_feature_0_0() line: 65  
    NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]  
    NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57  
    DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43  
    Method.invoke(Object, Object...) line: 601  
    ReflectionUtil.invokeMethod(Object, Method, Object...) line: 138 …
Run Code Online (Sandbox Code Playgroud)

groovy junit testng unit-testing spock

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

满足条件时,使用Groovy从JSON中拉出嵌套的Maps/EntrySet

在代码领域遇到大麻烦,因此我需要帮助!

使用Groovy和JsonSlurper我正在处理下面表单的JSON.当"类型"键设置为某个值时,我正在寻找外部包含元素(在我的情况下,这应该是全部应该是地图).例如,如果类型是"Type5",那么我需要返回三个地图:包含外部Type5的"body"地图,包含INNER Type5的"body"地图和靠近底部的Type5地图(每个的EntrySet也可以正常工作).Type3和Type4表现出相同的行为!

根据请求编辑以拥有有效的Json

我通过Groovy的JsonSlurper运行它,所以它应该是有效的.

{
"type": "Run1",
"body": [
{
  "type": "Type1",
  "expression": {
    "type": "Type2",
    "expressions": [
      {
        "type": "Type3",
        "body": {
          "type": "Type4",
          "id": null,
          "params": [
            {
              "type": "Identifier",
              "name": "a"
            },
            {
              "type": "Identifier",
              "name": "b"
            },
            {
              "type": "Identifier",
              "name": "c"
            }
          ],
          "body": {
            "type": "Type5",
            "body": [
              {
                "type": "Type6",
                "id": {
                  "type": "Identifier",
                  "name": "d"
                },
                "params": [
                  {
                    "type": "Identifier",
                    "name": "a"
                  }
                ],
                "body": {
                  "type": "Type5",
                  "body": [ …
Run Code Online (Sandbox Code Playgroud)

groovy json jsonslurper

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

自动分区/批处理大型 Spring Data JPA 条款

当输入列表变大时,一个常见的模式会导致问题。许多扩展的 Spring Data 接口org.springframework.data.jpa.repositoryJpaRepository声明使用 in-clause 的查询。一个简化的例子:

@Query("SELECT c.someImportantData FROM SomeComponent c WHERE c.someForeignKeyId IN (:someIds)")
List<Object> getImportantDataBySomeIds(@Param("someIds") Collection<UUID> someIds);
Run Code Online (Sandbox Code Playgroud)

只要列表someIds很小,这很有效。随着Postgresql小32767然而,一些内部使用超过这个数量,导致错误/异常的定义。目前,通过对主列表进行分区,然后通过调用软件传入较小的集合来修复这些问题。虽然这种方法也有效,但我想知道 JPA/SpringDataJPA 中是否有一种方法可以完成同样的任务?如果重要的话,我正在使用 Spring Data JPA 1.11.12。

java spring spring-data-jpa

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

Docker 可以在卷定义中使用环境变量吗?

webapp在 docker compose 文件中定义了一项服务。尝试为用户添加一些灵活性来自定义卷安装。我尝试了很多变体,但都没有成功,最有希望的一个是:

    volumes: ['log-volume:/path/to/container/logs', 
              'data-volume:/path/to/container/data' ${WEBAPP_VOLUMES:-''}]
Run Code Online (Sandbox Code Playgroud)

我认为这应该将环境变量默认为空字符串,并且一切都应该很好(即 ​​WEBAPP_VOLUMES 未在 .env 文件中定义)。然后要使用,需要以逗号开始任何定义,这并不理想,但似乎可以接受。然而,docker-compose讨厌这个!

我收到如下错误:

ERROR: yaml.scanner.ScannerError: while scanning a plain scalar
  in "./docker-compose.yml", line 20, column 110
found unexpected ':'
  in "./docker-compose.yml", line 20, column 124
Please check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.
Run Code Online (Sandbox Code Playgroud)

有谁知道要完成我在这里想做的事情?

yaml docker docker-compose docker-swarm

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

PowerMockMockito测试在Junit下运行,但不在TestNG下运行

我试图从Powermock 运行这个基线单元测试.使用Mockito和Junit运行代码As-Is关闭该链接,它运行时没有错误.不幸的是,我需要Mockito和TestNG,这让我在10次测试中有6次出错:

Mockito cannot mock this class: class replica.java.util.UUID$$PowerMock5
Mockito can only mock visible & non-final classes.
Run Code Online (Sandbox Code Playgroud)

对不起,这是一个很长的代码,但我想完成.第一次测试通过,第二次,第5次,第6次,第7次,第9次和第10次全部失败.这可以在TestNG下工作吗?

编辑 - 添加版本号

这些结果发生在Mockito V1.9.0,Powermock V1.4.12和TestNG v6.8(都在Java 1.7下运行)

以下是我的小修改代码:

/*
 * Copyright 2008 the original author or authors.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by …
Run Code Online (Sandbox Code Playgroud)

testng mocking mockito powermock

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

Spring 表达式语言 - 如果设置了 Profile,则设置不同的值

我有一堂这样的课:

public AbstractConfig() {
    super(DataConfig.MGR_NAME);
}
Run Code Online (Sandbox Code Playgroud)

里面DataConfig有:

    public final String MGR_NAME = "theManager";
Run Code Online (Sandbox Code Playgroud)

我发现 SpEL 文档令人困惑。如果设置了 Spring 配置文件,有没有办法可以更改值?也就是说,如果我有配置文件“AlternateManager” use theManagerAlt,但默认为theManager其他情况?

虽然我编写了这个符号来获取活动配置文件,但我希望存在一些如下所示的语法来完成这项工作:

    @Value("#PROFILE['AlternateManager'] ? 'theManagerAlt' : 'theManager' ")
    public final String MGR_NAME;
Run Code Online (Sandbox Code Playgroud)

java spring spring-el spring-profiles

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

Docker-compose:如何在版本 3 中执行版本 2“mem_limit”?

最近,我尝试将版本2 docker-compose yaml文件升级到 version 3。具体来说,我是从 2.1 到 3.4。使用docker-compose版本 1.18.0 和docker版本 18.06.01。

docker-compose由于版本 2 选项的存在,第一次尝试导致中止:mem_limit。阅读这些第 3 版文档,它清楚地指出mem_limit已被删除并查看“升级”以指导使用远离此选项。这些说明告诉您使用deploy带有resources. 对docker-compose.yml文件进行这些更改,系统会正常启动。

不幸的是,我错过了那里的免责声明,它指出deploydocker-compose! 我的问题:有没有办法在使用 Compose 文件参考 3 的docker-compose同时仍然强制执行容器内存限制?

docker docker-compose

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