小编Dam*_*eev的帖子

分页更新。是否可以?

它们是否存在一些方法来处理更新的分页?例如,我有 100 行类型:

@Id
private Integer id;
@Column
private boolean flag;
@Column
private Date last;
Run Code Online (Sandbox Code Playgroud)

一开始它们看起来像:id、false、null

我有坚持的方法:

@Query("SELECT t FROM Test t WHERE (t.last < :processStart OR t.last IS NULL)")
Page<Test> find(Pageable pageable, @Param("processStart") Date processStart);
Run Code Online (Sandbox Code Playgroud)

我需要取 10 个,为每个设置标志 true 和 last = new Date() 并将其保存回数据库。

实现看起来像:

Date start = new Date();
for (int i = 0; i < 10; i++) {
    Pageable request = new PageRequest(i, 10, SortDirectuin.ASC, "id");
    Page page = testPersistence.find(request, start);
    page.getContext().forEach(t -> {
        ..huge part …
Run Code Online (Sandbox Code Playgroud)

java spring pagination

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

在 @ControllerAdvice 中处理损坏的管道异常也不起作用

再会。我知道“破损的管道”不是一个严重的异常,这意味着客户端没有等待服务器的响应。我知道有很多类似的问题,但我找不到答案

我想保持我的日志清晰,所以我找到了解决方案

我尝试这样写:

@ControllerAdvice
public class ControllerAdvisor {

    private static final Logger LOGGER = LogManager.getLogger();

    @ResponseBody
    @ExceptionHandler(IOException.class)
    @ResponseStatus(HttpStatus.SERVICE_UNAVAILABLE)
    public Object brokenPipeHandle(IOException e, HttpServletRequest req) {

        if (StringUtils.containsIgnoreCase(ExceptionUtils.getRootCauseMessage(e), "Broken pipe"))
            return null;

        return new ErrorDto(e.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

但断管异常仍然发生,我在日志中看到:

java.io.IOException: Broken pipe
    at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[na:1.8.0_91]
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) ~[na:1.8.0_91]
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) ~[na:1.8.0_91]
    at sun.nio.ch.IOUtil.write(IOUtil.java:65) ~[na:1.8.0_91]
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) ~[na:1.8.0_91]
    at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1241) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:428) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:418) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.coyote.http11.Http11OutputBuffer.flushBuffer(Http11OutputBuffer.java:533) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
    at …
Run Code Online (Sandbox Code Playgroud)

java spring controller exception broken-pipe

6
推荐指数
0
解决办法
1440
查看次数

无法在Spring Boot中将ProblemHandler设置为ObjectMapper

我试图使用Jackson2ObjectMapperBuilderCustomizer将自定义问题处理程序添加到对象映射器:

@Bean
public Jackson2ObjectMapperBuilderCustomizer customizer() {
    return new Jackson2ObjectMapperBuilderCustomizer() {
        @Override
        public void customize(Jackson2ObjectMapperBuilder builder) {
            ObjectMapper m = builder.build();
            m.addHandler(
                    new DeserializationProblemHandler() {
                        @Override
                        public boolean handleUnknownProperty(DeserializationContext ctxt, JsonParser p, JsonDeserializer<?> deserializer, Object beanOrClass, String propertyName) throws IOException {
                            System.out.println("ahahahaa");
                            return super.handleUnknownProperty(ctxt, p, deserializer, beanOrClass, propertyName);
                        }
                    }
            );
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

但是当我自动装配ObjectMapper bean时,_problemHandlers属性为null。

我也尝试过使用以下命令自定义现有的ObjectMapper:

@Autowired
public customize(ObjectMapper mapper) {
...
}
Run Code Online (Sandbox Code Playgroud)

但是结果是一样的。我不知道谁可以删除此属性。我根本不会在另一个地方初始化对象映射器的其他构建器/工厂/等。我做错了什么?

java spring jackson objectmapper jackson-databind

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

如何从Spring Security中的java代码登录用户?

我正在尝试在我的 Java 代码中编写一些脚本,我需要在其中登录用户,执行一些类似于真实用户可以从 Web 客户端执行的操作并为每个用户注销。

这在 Spring Security 中是如何工作的?我该怎么办?我的意思是如何模拟真实的用户身份验证,使用会话、角色和权限?

非常感谢!

java session spring spring-security

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