>  기사  >  Java  >  SpringBoot가 jackson을 사용하여 시간 형식을 지정하는 방법

SpringBoot가 jackson을 사용하여 시간 형식을 지정하는 방법

WBOY
WBOY앞으로
2023-05-25 20:34:041093검색

준비

프로젝트를 생성하고 종속성을 추가합니다.

<dependency>
	<groupid>org.springframework.boot</groupid>
	<artifactid>spring-boot-starter-web</artifactid>
</dependency>

엔티티 클래스 UserDTO를 생성합니다.

속성을 추가하고 get 및 set 메서드를 생략합니다.

private String id;
private String username;
private Date createTime;

Create UserController

컨트롤 레이어 코드 작성

@RestController
public class UserController {
    @GetMapping("/getUser")
    public List<userdto> getUser() {
        List<userdto> userList = new ArrayList<userdto>();
        for (int i=1; i<p>인터페이스 호출: http://localhost:8080/getUser</p>
<p><img src="https://img.php.cn/upload/article/000/887/227/168501804652134.png" alt="SpringBoot가 jackson을 사용하여 시간 형식을 지정하는 방법"></p>
<p> 결과는 분명히 우리에게 필요한 결과가 아니므로 시간 형식을 지정해야 합니다. 그리고 시간대 문제가 있어서 현재 시간은 오후 22시 44분입니다. </p>
<h4>첫 번째 방법은 주석을 사용하는 것입니다<br>
</h4>
<p>변환해야 하는 필드에 @JsonFormat 주석을 추가합니다. 이 주석은 jackson에서 가져온 것이며 웹 패키지에 통합되어 있습니다. </p>
<pre class="brush:php;toolbar:false">import com.fasterxml.jackson.annotation.JsonFormat;

private String id;
private String username;
 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date createTime;

패턴: 변환해야 하는 시간과 날짜의 형식

timezone: 변환 시 시간 오류를 피하기 위해 시간은 동부 8구로 설정됩니다.

통화 인터페이스: http://localhost:8080/ getUser

SpringBoot가 jackson을 사용하여 시간 형식을 지정하는 방법

Complete 하지만 여기에도 단점이 있습니다. 모두 Date 유형을 갖는 100개의 엔터티가 있는 경우 100개의 엔터티에 주석을 추가해야 합니다. 좀 곤란한 것 같습니다.

두 번째 방법은 기본 구성을 수정하는 것입니다

모든 json 생성은 관련 HttpMessageConverters와 분리될 수 없습니다.

SpringBoot는 기본적으로 jackson을 사용하고 이를 기본적으로 구성합니다. 그럼 수정해 보겠습니다.

JacksonHttpMessageConvertersConfiguration에 대한 전역 검색. 아이디어 단축키: Ctrl + Shift + r

SpringBoot가 jackson을 사용하여 시간 형식을 지정하는 방법

이 클래스에는 json을 처리하는 데 사용되는 매핑Jackson2HttpMessageConverter 메서드가 있습니다.

@Bean
@ConditionalOnMissingBean(
	value = {MappingJackson2HttpMessageConverter.class},
	ignoredType = {"org.springframework.hateoas.server.mvc.TypeConstrainedMappingJackson2HttpMessageConverter", "org.springframework.data.rest.webmvc.alps.AlpsJsonHttpMessageConverter"}
)
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) {
	return new MappingJackson2HttpMessageConverter(objectMapper);
}

이 메서드에는 두 가지 주석이 있으며 @Bean 주석은 도입되지 않습니다. ConditionalOnMissingBean 주석을 도입합니다.

@ConditionalOnMissingBean: 해당 Bean이 존재하지 않는 경우 현재 Bean을 인스턴스화합니다.

비유: 취업 신고를 할 때 회사에서는 컴퓨터를 가져온 것으로 보고 컴퓨터를 가져오지 않은 경우 회사 컴퓨터를 사용하도록 허용합니다. SpringBoot는 동일한 작업을 수행합니다. 제공하지 않으면 기본 항목을 사용합니다.

New MyConfig

import java.text.SimpleDateFormat;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.databind.ObjectMapper;

@Configuration
public class MyConfig {

    @Bean
    MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverterConfiguration() {
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        ObjectMapper om = new ObjectMapper();
        //全局修改josn时间格式
        om.setDateFormat(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"));
        converter.setObjectMapper(om);
        return converter;
    }
}

는 MappingJackson2HttpMessageConverter의 Bean을 제공하므로 Springboot는 우리가 제공하는 것을 사용합니다.

사용자 엔터티 주석을 추가합니다

SpringBoot가 jackson을 사용하여 시간 형식을 지정하는 방법

인터페이스를 호출합니다. http://localhost:8080/getUser

SpringBoot가 jackson을 사용하여 시간 형식을 지정하는 방법

이 방법도 가능합니다.

ObjectMapper 제공

ObjectMapper를 제공하고 위에 제공된 MappingJackson2HttpMessageConverter를 주석 처리할 수도 있습니다.

import java.text.SimpleDateFormat;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.databind.ObjectMapper;
@Bean
ObjectMapper objectMapper() {
	ObjectMapper om = new ObjectMapper();
	om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
	return om;
}

통화 인터페이스: http://localhost:8080/getUser

SpringBoot가 jackson을 사용하여 시간 형식을 지정하는 방법

참고: 위의 두 가지 방법은 전체적으로 수정되었습니다!

세 번째 구성 파일 수정

application.yml 또는 속성에서 기본 구성을 수정하세요

yml

spring: 
  jackson: 
    date-format: yyyy/MM/dd
    timezone: GMT+8

properties

spring.jackson.date-format=yyyy-MM-dd HH:mm
spring.jackson.time-zone=GMT+8

두 번째 방법과 세 번째 방법 구성이 동시에 존재하는 경우 두 번째 방법을 사용하세요. .

세 가지 메소드가 모두 존재하는 경우 엔터티 클래스의 주석 형식이 주요 형식이 됩니다.

위 내용은 SpringBoot가 jackson을 사용하여 시간 형식을 지정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제