小编sur*_*rya的帖子

javax bean验证不适用于方法参数

javax验证不适用于方法参数。这是测试代码,并且javax验证均不适用于方法参数。

@RequestMapping(value = "/{id}", method = RequestMethod.PUT, params = "action=testAction")
public Test update(
        @Size(min = 1) @RequestBody List<String> ids,
        @Min(3) @PathVariable String name) {
    return doSomething(ids, name);
}
Run Code Online (Sandbox Code Playgroud)

但是我有很好的类级别验证...

@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public RoleType create (@RequestBody @Validated(FieldType.class) User user) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

@Size(min = 2, max = 10, groups = { FieldType.class }, message = "Invalid user code")
 public String getId() {
    return _id  ;
}
Run Code Online (Sandbox Code Playgroud)

-解决方案-

按照接受的答案执行所有步骤。另一个附加功能是在课堂上添加注释

@Validated
class UserController
{
   @RequestMapping(value = "/{id}", method = RequestMethod.PUT, …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate-validator bean-validation spring-boot

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

varargs作为java 8中函数的输入参数

在Java 8中,如何定义函数以适合varargs.

我们有这样的功能:

private String doSomethingWithArray(String... a){
   //// do something
   return "";
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我需要使用Java 8函数调用它(因为'andThen'可以与其他函数一起使用.)

因此我想定义下面给出的东西.

Function<String... , String> doWork = a-> doSomethingWithArray(a)  ;
Run Code Online (Sandbox Code Playgroud)

这给了我编译错误.以下工作,但输入现在必须是一个数组,不能是一个单独的字符串.

Function<String[] , String> doWork = a-> doSomethingWithArray(a)  ;
Run Code Online (Sandbox Code Playgroud)

这里我提到了String,但它可以是任何Object的数组.

有没有办法使用varargs(...)而不是array([])作为输入参数?

或者,如果我创建一个类似于Function的新界面,是否可以创建类似下面的内容?

@FunctionalInterface
interface MyFunction<T... , R> {
//..
} 
Run Code Online (Sandbox Code Playgroud)

java java-8

5
推荐指数
2
解决办法
2250
查看次数

Spring批处理:一次处理多条记录

我正在使用 spring 批处理,并且通常使用我有 reader、processor 和 writer。

我有2个问题

1> Reader 查询所有 200 条记录(表中的总记录大小为 200 并且我给出了 pagesize=200 ),因此它获得了所有 200 条记录,并且在处理器中我们想要所有这些记录的列表,因为我们必须将每条记录与其他 199 条记录将它们分组在不同的层中。因此,我在想,如果我们可以在处理步骤中获得该列表,我可以操纵它们。我应该如何处理。

2> 在处理阶段,我需要从数据库中获取一些主数据,这取决于将处理所有输入记录。我正在考虑在处理 bean 中注入数据源并获取所有主表数据并处理所有记录。这是好的方法还是请提出其他建议。

<job id="sampleJob">
    <step id="step1">
        <tasklet>
            <chunk reader="itemReader" processor="processor" writer="itemWriter" commit-interval="20"/>
        </tasklet>
    </step>
</job>
Run Code Online (Sandbox Code Playgroud)

处理器是

@Override
public User process(Object item) throws Exception {
    // transform item to user
    return user;
}
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西

public List<User> process(List<Object> item) throws Exception {
    // transform item to user
    return user;
}
Run Code Online (Sandbox Code Playgroud)

我在这里找到了一些帖子但他们说要在 writer 中获取列表。但我不喜欢在 writer 中处理任何内容,因为这会破坏作者和处理器的定义。是否有任何配置可以获取此进程方法中的列表。

谢谢

spring spring-batch

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