小编The*_*ist的帖子

什么是可能的轻量级Java配置库来处理复杂的配置?

我需要为java应用程序处理一组相对复杂的配置参数.要求大致如下:

  • 嵌套配置值包含列表,映射等 - 而不仅仅是普通键/值对
  • 多个配置文件,以后的配置文件可以智能地覆盖早期配置文件中的设置.
  • 从不同位置对同一配置项进行多次引用
  • 可继承的已配置对象,因此新对象可以从以前的对象复制配置,只需更改特定的内容即可
  • 新配置选项所需的代码非常少 - 最佳的方法是将@Configurable注释添加到字段或类似的东西

现在,我知道Spring以某种方式实现了所有这些.然而,它有一些缺点,但没有致命的:

  • Spring并没有真正优化为配置语言,因为它更关注依赖注入
  • XML配置文件更多的意思是在JAR文件中提供,而不是由最终用户修改,所有可配置属性通过单独的属性文件或类似文件引用 - 我需要配置文件完整且容易结束 - 用户可修改
  • 当有在线配置刷新而没有终止正在进行的连接时,以及当需要单独的配置检查原语需要完全验证配置但实际上没有做任何事情时,Spring配置有点单调乏味

所以,我问,你能想到任何能满足我要求的替代方案吗?

我有点像YamlBeans,但缺少一些功能.

java spring configuration-files

15
推荐指数
4
解决办法
9505
查看次数

Gradle incremental java编译导致完全重新编译

我只更改了一个源文件并重新启动了构建:

$ gradle jar
Incremental java compilation is an incubating feature.
:compileJava
Full recompilation is required because 'XXX.java' was changed.
Analysis took 0.241 secs.
Run Code Online (Sandbox Code Playgroud)

我的gradle配置有:

compileJava {
  options.fork = true
  options.incremental = true
}
Run Code Online (Sandbox Code Playgroud)

我希望Gradle只重新编译XXX.java,它不是应该做的吗?

gradle javacompiler

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

你如何"忽略"java.util.concurrent.Future对象?

你能发现这个bug吗?这将抛出一个java.lang.OutOfMemoryError.

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TestTheads {

    public static void main(String[] args) {

        ExecutorService executorService = Executors.newFixedThreadPool(1);
        while(true) {
            executorService.submit(new Runnable() {
                public void run() {
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                    }
                }
            });
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

错误是我调用executorService.submit()而不是executorService.execute(),因为submit()返回一个Future我忽略的对象.有了execute(),这个程序实际上将永远运行.

然而,人们并不总是拥有一种execute()方法,例如使用时ScheduledExecutorService:

public static void main(String[] args) {
    // this will FAIL because I ignore the ScheduledFuture object
    ScheduledExecutorService executorService = Executors.newScheduledThreadPool(2); …
Run Code Online (Sandbox Code Playgroud)

java concurrency java.util.concurrent

4
推荐指数
2
解决办法
2261
查看次数

向EJB添加依赖项

我想为EJB添加依赖项.我怎么用Spring做到这一点?从属对象是一般服务对象.根据下面的代码,我想连接myDependency而不必使用'new'.EJB在weblogic中运行.

@Stateless(mappedName = "MyBean")
public class MyBean implements MyBeanRemote, MyBeanLocal {

    @EJB(name = "MyOtherBean")
    private MyOtherBean myOtherBean;


    private MyDependency myDependency;
    ...

}
Run Code Online (Sandbox Code Playgroud)

java spring dependency-injection ejb weblogic

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