小编Phi*_*ppe的帖子

如何使用spring-boot在spring批处理中设置JobParameters

我按照http://spring.io/guides/gs/batch-processing/上的指南进行了操作,但它描述了一个没有可配置参数的作业.我正在使用Maven来构建我的项目.

我正在移植我在XML中定义的现有作业,并希望通过命令传入jobParameters.

我尝试了以下方法:

@Configuration
@EnableBatchProcessing
public class MyBatchConfiguration {

    // other beans ommited

    @Bean 
    public Resource destFile(@Value("#{jobParameters[dest]}") String dest) {
        return new FileSystemResource(dest);
    }

}
Run Code Online (Sandbox Code Playgroud)

然后我使用以下方法编译项目:

mvn clean package
Run Code Online (Sandbox Code Playgroud)

然后我尝试启动这样的程序:

java my-jarfile.jar dest=/tmp/foo
Run Code Online (Sandbox Code Playgroud)

我得到一个例外说:

[...]
Caused by: org.springframework.expression.spel.SpelEvaluationException: 
EL1008E:(pos 0): Field or property 'jobParameters' cannot be found on object of 
type 'org.springframework.beans.factory.config.BeanExpressionContext'
Run Code Online (Sandbox Code Playgroud)

谢谢 !

spring-batch spring-el spring-boot

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

如何配置grails插件的日志记录?

我正在创建我的第一个grails插件,我不知道应该在哪里配置日志记录.
在普通的grails应用程序中,有一个conf/Config.groovy文件,但对于插件没有.
还有另一种方法来实现这一目标吗?
我想在启动插件单元和集成测试时看到调试消息......

提前致谢.
菲利普

grails logging log4j grails-plugin

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

有没有欧洲国家和语言的java Enum?

是否有任何java(> 5)枚举用于在某个地方列出欧洲国家和语言?如果没有,我可能会从这个列表中写出来:http://www.nationsonline.org/oneworld/european_languages.htm

但如果我能避免这种负担,那就太好了!

PS:最后,我开始在geonames.org上使用geoNames webservice.对于我在Groovy中使用此代码段的国家/地区:

import org.geonames.*

ToponymSearchCriteria sc = new ToponymSearchCriteria()
sc.setContinentCode("eu")
sc.setFeatureCode("PCLI")
def res = WebService.search(sc)
def countries = res.getToponyms().collect{it.countryName}.sort()
Run Code Online (Sandbox Code Playgroud)

java enums internationalization

6
推荐指数
3
解决办法
4266
查看次数

如何使用Jackson注释序列化此JSON?

我有以下JSON:

{ 
    fields : {
            "foo" : "foovalue",
            "bar" : "barvalue"
    }
}
Run Code Online (Sandbox Code Playgroud)

我写了一个pojo如下:

public class MyPojo {

    @JsonProperty("fields") 
    private List<Field> fields;

    static class Field {
        @JsonProperty("foo") private String foo;
        @JsonProperty("bar") private String bar;

        //Getters and setters for those 2
}
Run Code Online (Sandbox Code Playgroud)

这显然会失败,因为我的json字段"fields"是一个hashmap,而不是一个列表.
我的问题是:是否有任何"魔术"注释可以使杰克逊将地图键识别为pojo属性名称,并将地图值分配给pojo属性值?

PS:我真的不想让我的田野对象......

private Map<String, String> fields;
Run Code Online (Sandbox Code Playgroud)

...因为在我的真实世界json中,我在地图值中有复杂的对象,而不仅仅是字符串......

谢谢 ;-)

菲利普

java serialization json jackson

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

如何在 Spring Batch 中使用 FlatFileItemWriter 写入标准输出?

我在 Spring Batch 项目的 beans 定义文件中配置了以下编写器:

<bean id="writer" class="org.springframework.batch.item.file.FlatFileItemWriter">
    <property name="resource" value="file:/path/to/somefile"/>
    <property name="lineAggregator">
        <bean class="MyCustomLineAggregator"/>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

现在,我不想写入 /path/to/somefile,而是希望将输出发送到 stdout,原因是我想通过命令行启动器启动此作业,并将输出通过管道传输到另一个 unix 程序。

我尝试将资源属性设置为“file:/dev/stdout”,但随后出现异常: org.springframework.batch.item.ItemStreamException: Unable to create file: [/dev/stdout]

我试图看看是否有一个开箱即用的资源可以处理这个问题,但我有点不知道哪个资源可以完成这项工作......

感谢您的帮助。

编辑:以下是我根据您的建议提出的解决方案:

import java.util.List;
import org.springframework.batch.item.ItemWriter;
import org.springframework.batch.item.file.transform.LineAggregator;

public class StdoutWriter<T> implements ItemWriter<T> {

LineAggregator<T> lineAggregator;

public void setLineAggregator(LineAggregator<T> lineAggregator) {
    this.lineAggregator = lineAggregator;
}

@Override
public void write(List<? extends T> items) throws Exception {
    for (T item : items) {
        System.out.println(lineAggregator.aggregate(item));
    }
}

}
Run Code Online (Sandbox Code Playgroud)

java spring iostream spring-batch java-io

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

是否可以将外部bean配置xml文件导入resources.groovy?

在我目前的grails应用程序中,我在resources.groovy中定义了spring bean.现在我还有一个已经定义了一堆bean的xml文件,我想按原样使用它们,而不是重新创建bean dsl中的每个bean.

这有可能吗?grails bean dsl中是否有等效的xml导入标记?我想在applicationContext.xml中添加import ...但是我不确定它是否适合这样做.

提前致谢,

菲利普

grails spring

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

使用GORM DSL将多个域对象映射到同一个表

我正在遗留数据库上创建一个grails应用程序.
有一个表格,我想创建几个不同的域对象(在我的例子中,Type1,Type2和Type3).
表格是这样的:

ID    TYPE    DESCRIPTION
1     type1   description of a type1 object
2     type1   description of another type1 object
3     type2   description of a type2 object
4     type3   description of a type3 object
...
Run Code Online (Sandbox Code Playgroud)

所以我想创建3个不同的域类,每个类包含一个名为"description"的字段,并且对应于特定的"类型",因为行代表不同的概念.

是否有任何类型的约束允许我按类型过滤行?

我的意思是,我可以这样做:

class Type1 {
    String type
    String description

    static mapping = {
       table 'mytable'
    }

    static constraints = { type == 'type1' } // Is there anything like this ?

 }
Run Code Online (Sandbox Code Playgroud)

然后我希望Type1.list()生成如下查询:

SELECT type, description 
FROM mytable
WHERE type = 'type1'
Run Code Online (Sandbox Code Playgroud)

更新:

实际上 …

orm grails groovy grails-orm

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

如何覆盖Spring Batch中的spring框架版本?

我正在使用Spring Batch 2.1.6.RELEASE开始一个新项目,我使用Maven进行依赖管理.

默认情况下,它导入spring framework 2.5.6,但我想改用3.0.5.RELEASE.

这篇文章说它兼容,但我不知道如何在我的maven pom文件中声明它.

我尝试将spring-core,spring-beans和spring-context版本3.0.5.RELEASE的依赖项放在一起,但是在不删除2.5.6版本的情况下将库添加到项目中.

我看一下spring-batch-parent pom文件,有一个名为"spring3"的配置文件,它使用我想要的spring版本.如何在项目的pom文件中激活配置文件?

提前致谢,

菲利普

java spring maven-2 dependency-management spring-batch

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

在quartz插件中使用grails数据源

我想在Burt的例子中创建使用JdbcStore的石英作业,如文档的聚类部分所述.

该示例显示了如何使用quartz.properties文件配置quartz.

现在,我希望我的jdbc存储与我的grails应用程序是同一个数据库,这样我就可以复制更少的设置了.

那么,假设我在我的数据库中手动创建了所需的表,是否可以使用在石英插件中使用Datasource.groovy中配置的默认dataSource?

我使用的是grails 2.4.4和quartz 1.0.2.

换句话说,我可以将我的设置添加到QuartzConfig.groovy而不是创建一个新的quartz.properties文件吗?至少我可以从单独的环境设置中受益.

这样的东西在QuartzConfig.groovy中是否有效?

quartz {
autoStartup = true
jdbcStore = true
waitForJobsToCompleteOnShutdown = true
exposeSchedulerInRepository = true

props {
    scheduler.skipUpdateCheck = true

    threadPool.class = 'org.quartz.simpl.SimpleThreadPool'
    threadPool.threadCount = 50
    threadPool.threadPriority = 9

    jobStore.misfireThreshold = 60000

    jobStore.class = 'impl.jdbcjobstore.JobStoreTX'
    jobStore.driverDelegateClass = 'org.quartz.impl.jdbcjobstore.StdJDBCDelegate'

    jobStore.useProperties = false
    jobStore.tablePrefix = 'QRTZ_'
    jobStore.isClustered = true
    jobStore.clusterCheckinInterval = 5000

    plugin.shutdownhook.class = 'org.quartz.plugins.management.ShutdownHookPlugin'
    plugin.shutdownhook.cleanShutdown = true

    jobStore.dataSource = 'myDS'
    // [...]
}
Run Code Online (Sandbox Code Playgroud)

grails quartz-scheduler grails-plugin

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

Groovy split()方法的bug?

以下Groovy代码段给我带来了奇怪的结果:

def s = "123456"
assert s.split("").size() == s.size()
Run Code Online (Sandbox Code Playgroud)

结果是 :

Assertion failed: 

assert s.split("").size() == s.size()
       | |         |      |  | |
       | |         7      |  | 6
       | |                |  123456
       | |                false
       | [, 1, 2, 3, 4, 5, 6]
       123456
Run Code Online (Sandbox Code Playgroud)

我是否在split()方法行为中遗漏了一些东西,或者这是一个真正的错误?

string groovy

0
推荐指数
1
解决办法
1360
查看次数