小编mat*_*boy的帖子

更清晰的方法来检查字符串是否是Java中ISO语言的ISO国家

假设有两个字符String,应代表ISO 639国家或语言名称.

你知道,Localeclass有两个函数getISOLanguages,getISOCountries它们分别返回一个String包含所有ISO语言和ISO国家的数组.

要检查特定String对象是否是有效的ISO语言或ISO国家/地区,我应该查看该数组中的匹配项String.好的,我可以通过使用二进制搜索(例如Arrays.binarySearch,ApacheCommons ArrayUtils.contains)来做到这一点.

问题是:存在任何提供更清洁方式的实用程序(例如来自GuavaApache Commons库),例如返回a boolean以验证String作为有效ISO 639语言或ISO 639国家/地区的函数

例如:

public static boolean isValidISOLanguage(String s)
public static boolean isValidISOCountry(String s)
Run Code Online (Sandbox Code Playgroud)

java validation iso apache-commons guava

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

Gson和抽象超类:反序列化问题

假设有一个抽象类,比方说A,和两个非抽象的子类,比如说A1A2.我想通过使用GSON库从json格式"反序列化"它们.

我得到一个A对象数组.

int n = ...;
A[] list = new A[n];
A[0] = new A1(....);
A[1] = new A2(....);
...
Run Code Online (Sandbox Code Playgroud)

有人转换为JSON字符串,如下所示:

String json = (new Gson()).toJson(list);
Run Code Online (Sandbox Code Playgroud)

最后,如果我尝试反序列化如下

A[] deserializedList =  (new Gson()).fromJson(json, A[].class);
Run Code Online (Sandbox Code Playgroud)

然后我有一个错误,因为GSON默认的反序列化器找到一个抽象类(即A),它不能猜测子类类型.

我怎么解决这个问题?

PS:我读过有关自定义反序列化器的内容,但在这种情况下我不明白如何使用它们.

java gson

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

jOOQ和Spring事务管理

我使用jOOQ 3.8和Spring Boot 1.4.1.我看到jOOQ使用一种机制来保证事务处理.

如果我将一个注释为事务的方法定义为一个执行二插入,那么它们是否在同一个事务中执行,例如

@Transactional(propagation = Propagation.MANDATORY)
public doInsert(){
    DSL.using(configuration).insertInto(...);
    DSL.using(configuration).insertInto(...);
}
Run Code Online (Sandbox Code Playgroud)

如果发生异常,所有执行的插入回滚吗?它们会在一次交易中执行吗?

或者,我应该这样做:

public doInsert(){
  create.transaction(configuration -> {

    DSL.using(configuration).insertInto(...);
    DSL.using(configuration).insertInto(...);    
  });
}
Run Code Online (Sandbox Code Playgroud)

如果我使用注释和jOOQ事务如下所示会发生什么:

@Transactional(propagation = Propagation.MANDATORY)
public doInsert(){
  create.transaction(configuration -> {

    // Wrap configuration in a new DSLContext:
    DSL.using(configuration).insertInto(...);
    DSL.using(configuration).insertInto(...);    
  });
  throw new RuntimeException(":)");
}
Run Code Online (Sandbox Code Playgroud)

无论例外情况如何,都会提交事务中的更改吗?(我希望它)

java spring transactions jooq

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

org.apache.http.client.HttpClient - 每个请求一个?

我使用org.apache.http.client.HttpClient.我有一个问题涉及这个类的使用.

我应该为HttpClient每个请求创建一个新的(例如,因为它是一个轻量级对象),或者每个http请求最好使用一个唯一的实例(例如,因为创建/删除是昂贵的)?如果只HttpClient允许使用一个实例,则是HttpClient线程安全的(例如,它可以同时处理许多http请求),或者在这种情况下最好创建一个HttpClients 的池?

实际上,我为每个请求创建了一个新的HttpClient.我怀疑我必须创建一个唯一的实例,在使用我的应用程序结束时关闭getConnectionManager().shutdown(),但我不知道我是否可以维护基于线程的并行性.

java connection http apache-httpclient-4.x

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

JaCoCo并错过了对私有默认构造函数的报道

我想看一个例子来阻止JaCoCo将私有空构造函数报告为Java类中的非覆盖代码.

在我的maven插件配置中

   <rule>
     <element>CLASS</element>
       <excludes>
         <exclude>JAVAC.SYNTHCLASS</exclude>
         <exclude>JAVAC.SYNTHMETH</exclude>
       </excludes>
     </element>
   </rule>
Run Code Online (Sandbox Code Playgroud)

是不是有类似的构造函数?

java code-coverage private-constructor jacoco-maven-plugin

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

iCheck并手动设置复选框以进行检查

我正在使用iCheck框架,我有两个输入

<input name="group" id="id1" type="radio" checked>
<input name="group" id="id2" type="radio">
<input name="group" id="id3" type="radio">
<input name="group" id="id4" type="radio">
Run Code Online (Sandbox Code Playgroud)

点击后我调用ajax函数.如果出现故障,我想将checked属性设置为先前选择的输入.

var currentChecked = $("input[name='group']:radio:checked");

$("input[name='group']:radio").each(function() {
        $(this).on('ifChecked', function(){
               $.ajax({
                    url: "/ajax/something/"
                })
                .done(function (data) {
                    currentChecked = $(this);
                })
                .fail(function (data) {
                    $(this).removeAttr('checked');
                    currentChecked.prop('checked', true);
                });
 });
});
Run Code Online (Sandbox Code Playgroud)

但这不会重置已选中的复选框.有什么我从iCheck框架中看不到的东西?有解决方案吗

javascript jquery icheck

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

Netbeans:编译时将文本文件移动到dist文件夹

我有一个文本文件(比方说textfile.txt)存储在Netbeans 7.3的项目文件夹中,例如

project folder
  textfile.txt
  src
    package
    package.subpackage
      MyClass.java
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到一个dist放置jar文件的文件夹,例如

project folder
  textfile.txt
  dist
    MyProject.jar
  src
    package
    package.subpackage
      MyClass.java
Run Code Online (Sandbox Code Playgroud)

如何编辑build.xml文件以使文件textfile.txt复制到dist文件夹下?

compilation netbeans-7

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

导入模块中的Spring启动和控制器

我有一个Spring启动应用程序,我想导入一个用spring boot编写的依赖项,它定义了一些控制器.

也许它很简单,但是如何让主应用程序能够在导入的模块中初始化所有这些控制器?当我尝试访问这些控制器的路径时,我得到一个错误,错过了给定路径的处理程序方法.我尝试如下:

@SpringBootApplication
@ComponentScan(basePackages = {"com.main.project", "com.imported.dependency"})
public class MyApplication
    implements CommandLineRunner {

    public static void main(final String... args) {
        SpringApplication app = new SpringApplication(MyApplication.class);
        app.setWebEnvironment(true);
        app.run(args);

    }
}
Run Code Online (Sandbox Code Playgroud)

即我试过@ComponentScan,但没有任何反应.

我还试图查看控制器是否已加载:

ApplicationContext ctx = SpringApplication.run(FrontendApplication.class, args);

System.out.println("Let's inspect the beans provided by Spring Boot:");

String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
    System.out.println(beanName);
}
Run Code Online (Sandbox Code Playgroud)

他们不是.我试图删除@SpringBootApplication,并使用@EnableAutoConfiguration@ComponentScan,但这不起作用.

建议?

java spring spring-mvc controllers

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

反序列化对象时Gson忽略null

我想反序列化在Java中包含空值的json字符串.我想将对象反序列化为Properties对象.json字符串类似于:

{"prop1":null, "propr2":"fancy value"}
Run Code Online (Sandbox Code Playgroud)

当我反序列化时使用

String json = //
new Gson().fromJson(json, Properties.class);
Run Code Online (Sandbox Code Playgroud)

我得到一个空指针异常,因为Hastable它进入了Properties对象.如何指示Gson忽略空值的反序列化?

java json gson deserialization

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

无论我的@TestPropertySource注释如何,Spring Boot都会加载所有可用的属性文件

我有一个Spring Boot 1.4.3项目.在test/resources文件夹中我有两个属性文件,让我们说 a-test.propertiesb-test.properties.

测试类注释如下:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(locations = "classpath:a-test.properties")
Run Code Online (Sandbox Code Playgroud)

但是,我在测试中看到也b-test.properties加载了属性(我通过简单的打印输出验证了这一点).

为什么?我怎么能阻止这个?


从我的测试中提取的示例

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(locations = "classpath:base-test.properties", inheritProperties=false)
public class EmailServiceContextBasedTest {

    @SpyBean
    public JavaMailSender javaMailSender;

    @Before
    public void setUp() throws Exception {

        System.out.println(
           ((JavaMailSenderImpl)javaMailSender).getPassword()
        );
        System.out.println(
           ((JavaMailSenderImpl)javaMailSender).getJavaMailProperties()
        );
    }


    @Test
    public void test() throws Exception {
      // do nothing
    }

}
Run Code Online (Sandbox Code Playgroud)

在哪里a-test.properties:

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=email@gmail.com
spring.mail.password=password
spring.mail.properties.mail.smtp.auth=false
spring.mail.properties.mail.smtp.starttls.enable=false
Run Code Online (Sandbox Code Playgroud)

b-test.properties

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=myemail@gmail.com …
Run Code Online (Sandbox Code Playgroud)

spring unit-testing properties spring-boot

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