使计时器在属性文件中可配置

时间:2018-12-03 07:55:47

标签: java

我有一个Java程序,在其中编写了调度程序,或者在计时器开始运行时编写了计时器。它将每隔N分钟无限期调用一次该函数。现在,我将N设置为5分钟。

我想以jar文件的形式连同某种属性文件一起发送该程序,测试人员或其他任何人都可以在其中配置N;因此它更加方便,而且我不必更改代码本身。

这是一个示例:

new Vue({
    el: '#vueapp',
    router,
    data () {
        return {
          linkTemplate1: "<a href='/detail/#:ProductID#' class='k-button'>Link</a>",
          detailsLink: [{ 
            name: "details",
            click: function(e) {
              // prevent page scroll position change
              e.preventDefault();
              var tr = $(e.target).closest("tr"); // get the current table row (tr)
              // get the data bound to the current table row
              var data = this.dataItem(tr);
              // redirect to new page
              router.push({ path: `/detail/${data.ProductID}` })
            },// template must include k-grid-[command name]
            template: "<a class='k-button k-grid-details'>TEST</a>"
          }]
        }
    }
})

在这种情况下,N = 300000。

我对jar文件不太熟悉,但是我确实创建了带有数据库连接的属性文件。

这就是我所谓的属性:

public void schedule() throws Exception {

    Timer t=new Timer();
    t.scheduleAtFixedRate(
        new TimerTask() {
            @Override
            public void run() {
              // System.out.println("HELEOELE");

                try {
                    test.index();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        },
      0,
        300000);
}

所以我将有什么办法做到这一点?

1 个答案:

答案 0 :(得分:1)

如果只有jar中存在属性文件,则可以从类路径读取属性文件。

请参阅: Load properties file in JAR?

但是,如果您不想将属性文件存储在jar之外,并且能够在其中进行更改,那么有多种选择:

  • 将其存储在文件系统上代码读取位置的指定位置。

  • 代替属性文件,您还可以定义一个系统属性,该属性存储所需的值。但是,每次更改值时,您都必须重新启动容器。

  • 您还可以考虑直接从数据库读取此值(可选地将其加载到内存中的缓存中)。但是,这里需要另一个API来对数据库进行更改。

  • 将其存放在罐子外面。请参考以下链接 Read properties file outside JAR file