小编hor*_*oje的帖子

Locale.forLanguageTag() 与 new Locale()

使用哪一个?

final Locale locale = Locale.forLanguageTag("en-US");
Run Code Online (Sandbox Code Playgroud)

或者

final Locale locale = new Locale("en", "US");
Run Code Online (Sandbox Code Playgroud)

当您查看它们的实现时,它们都有大量代码,我无法从这些代码中看出哪一个更快或应该首选。

由于我将它用于对 Web 应用程序的每个请求,因此很高兴知道哪一个更适合我的情况。

java locale localization

8
推荐指数
1
解决办法
2278
查看次数

在使用 Spring Boot 自动转换 RequestBody 期间 ZonedDateTime 的时区更改为 UTC

我试图在对 Spring Boot 控制器执行 POST/PUT 时保留在前端设置的 ZonedDateTime 的 ZoneId。

我要转移的价值是: 2019-05-01T00:00:00+01:00[Europe/Zagreb]

POST/PUT 后,ZoneId 将转换为 UTC 并调整小时数。从技术上讲,这个更新的值代表时间线上的同一点,但原始的 ZoneId 丢失了,我希望将其存储起来以便稍后将其显示给最终用户。

// DTO
public class PriceInfoDTO {
    @JsonFormat( pattern = "yyyy-MM-dd'T'HH:mm:ssXXX['['VV']']", 
        with = JsonFormat.Feature.WRITE_DATES_WITH_ZONE_ID )
    @DateTimeFormat( pattern = "yyyy-MM-dd'T'HH:mm:ssXXX['['VV']']", iso = ISO.DATE_TIME )
    private ZonedDateTime validFrom;
}


// Controller
@PutMapping(
    path = PATH + "/{id}",
    consumes = MediaType.APPLICATION_JSON_VALUE,
    produces = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<PriceInfo> update(
    @PathVariable("id") final Integer id,
    @RequestBody final PriceInfoDTO dto
) {
    System.out.println(dto);
    ...
}
Run Code Online (Sandbox Code Playgroud)

查看浏览器中的 Network 选项卡,从浏览器到 Spring Controller …

java spring controller spring-boot zoneddatetime

3
推荐指数
2
解决办法
2102
查看次数

从 SB 2.2.7 升级到 SB 2.3.0 后,Spring Boot 应用程序无法启动

我使用 Java 8、Spring Boot 和 Hibernate Search,看起来应用程序启动在 Lucene 索引初始化时停止。尝试使用以前用 SB 2.2.7 构建的索引文件,但没有成功。还尝试删除 Lucene 制作的所有文件并重新开始,但没有成功。尽管我将所有内容都放在跟踪日志级别中,但日志中没有任何内容可以帮助了解发生了什么。

请参阅 pom.xml 和下面的最后几行日志。如果需要,我可以提供完整的跟踪日志。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.thevegcat</groupId>
    <artifactId>TheVegCat</artifactId>
    <version>0.4.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>The Vegan Catalog</name>
    <description>The Best World Vegan Catalog by H.Lo</description>

    <developers>
        <developer>
            <id>HLo</id>
            <name>Hrvoje Lon?ar</name>
            <email>horvoje@gmail.com</email>
        </developer>
    </developers>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.0.RELEASE</version>
        <relativePath />
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <hibernate.version>5.4.16.Final</hibernate.version>
        <groovy-all.version>3.0.4</groovy-all.version>
        <junit-jupiter.version>5.6.2</junit-jupiter.version>
        <tika-core.version>1.24.1</tika-core.version>
        <jsoup.version>1.13.1</jsoup.version>
        <hibernate-search-orm.version>5.11.5.Final</hibernate-search-orm.version>
        <opencsv.version>5.2</opencsv.version>
        <org.eclipse.jdt.annotation.version>2.2.400</org.eclipse.jdt.annotation.version>
        <jacoco.version>0.8.5</jacoco.version>
        <junit-platform-surefire-provider.version>1.3.2</junit-platform-surefire-provider.version>
        <commons-io.version>2.6</commons-io.version>
        <urlrewritefilter.version>4.0.4</urlrewritefilter.version>
        <json-simple.version>1.1.1</json-simple.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>jakarta.validation</groupId>
            <artifactId>jakarta.validation-api</artifactId>
        </dependency> …
Run Code Online (Sandbox Code Playgroud)

java lucene spring hibernate-search spring-boot

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

Hibernate 搜索 6 与 Hibernate 6

我正在尝试使用最新版本从头开始设置 Spring Boot 3.0.1 项目。到目前为止,我设法使 mvc 和存储库正常工作,但是在添加 Hibernate Search 时,事情将不再起作用。

下面你可以看到我的pom.xml文件。

当我进入“依赖层次结构”(Eclipse STS)时,我可以找到hibernate-core 5.6.11.Final嵌入hibernate-search-mapper-pojo-base 6.1.7.Finalhibernate-search-mapper-orm 6.1.7.Final. 这是否意味着我必须手动排除此版本并包含更高版本?也hibernate-core 5.6.11.Finalhibernate-commons-annotations 5.1.2.Final嵌入。为什么这么复杂?我有什么遗漏的吗?

在控制台日志中我得到这个:

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    org.hibernate.cfg.annotations.BasicValueBinder.resolveJavaType(BasicValueBinder.java:1002)

The following method did not exist:

    'java.lang.reflect.Type org.hibernate.annotations.common.reflection.ReflectionManager.toType(org.hibernate.annotations.common.reflection.XClass)'

The calling method's class, org.hibernate.cfg.annotations.BasicValueBinder, was loaded from the following location:

    jar:file:/C:/Users/Hrvoje/.m2/repository/org/hibernate/orm/hibernate-core/6.1.6.Final/hibernate-core-6.1.6.Final.jar!/org/hibernate/cfg/annotations/BasicValueBinder.class …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate hibernate-search spring-boot

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

Java LocalDateTime 与 ZonedDateTime

我正在创建一个后端服务,该服务应该向第三方服务发出一些请求并根据响应进行更新。单一的工作是由数千个微小的工作组成的。主要工作以及每个子工作的确切begin时间应存储在报告中。主要作业也可以从网络用户界面运行,这意味着其他时区取决于登录的用户。endbeginend

最初的想法(和实现)是在主作业的一开始就存储ZoneId(如果作业按计划启动,则存储在本地服务器中;如果用户手动启动作业,则存储在登录用户中),然后用于LocalDateTime存储beginend主要工作和子工作。或者在这种情况下我应该使用Instant而不是LocalDateTime

private ZoneId zoneId;
private LocalDateTime begin;
private LocalDateTime end;
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是正确的使用方式,或者我应该为每个ZoneId使用它,并忘记独立的属性。ZonedDateTimebeginendZoneId

private ZonedDateTime begin;
private ZonedDateTime end;
Run Code Online (Sandbox Code Playgroud)

编辑:只是为了为未来的读者提供更多信息:

情况 1将是 cron 作业,它将每天在某个时间运行一次(具体时间并不重要,但每天的同一时间)并且报告将显示“开始作业于”、“完成作业于”。

情况 2是当单击“立即运行更新”时,相同的作业将运行并生成相同的报告。

java java-time

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

Lombok @Builder 上的泛型类

有没有办法将 Lombok@Builder与 Java 泛型一起使用?

@Builder
public class Response<T> {
    private String status;
    private long total;
    private List<T> page;
}

Run Code Online (Sandbox Code Playgroud)

稍后在处理来自控制器的请求的服务中:

long total = getTotalItemsCount();
List<Article> page = getPage();

Response<Article> response =
    Response.builder()
        .status("ok")
        .total(total)
        .page(page); // error on this line

Run Code Online (Sandbox Code Playgroud)

无法调用page方法:

page(List<Object>)类型中的 方法Response.ResponseBuilder<Object>不适用于参数 ( List<Article>)

有任何想法吗?

java generics spring builder lombok

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