Heim >Java >javaLernprogramm >Wie SpringBoot Jackson zum Formatieren der Zeit verwendet

Wie SpringBoot Jackson zum Formatieren der Zeit verwendet

WBOY
WBOYnach vorne
2023-05-25 20:34:041130Durchsuche

Vorbereitung

Erstellen Sie das Projekt, fügen Sie Abhängigkeiten hinzu

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

Erstellen Sie die Entitätsklasse UserDTO

Fügen Sie Attribute hinzu und lassen Sie die Get- und Set-Methoden weg.

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

UserController erstellen

Schreiben Sie den Code der Kontrollschicht

@RestController
public class UserController {
    @GetMapping("/getUser")
    public List<userdto> getUser() {
        List<userdto> userList = new ArrayList<userdto>();
        for (int i=1; i<p>Rufen Sie die Schnittstelle auf: http://localhost:8080/getUser</p>
<p><img src="https://img.php.cn/upload/article/000/887/227/168501804652134.png" alt="Wie SpringBoot Jackson zum Formatieren der Zeit verwendet"></p>
<p>Das Ergebnis ist offensichtlich nicht das, was wir brauchen, also müssen wir die Zeit formatieren. Und es gibt ein Zeitzonenproblem, meine aktuelle Zeit ist 22:44 Uhr. </p>
<h4>Die erste Methode ist die Verwendung von Annotationen<br>
</h4>
<p>Fügen Sie die Annotation @JsonFormat zu den Feldern hinzu, die konvertiert werden müssen. Diese Annotation stammt von Jackson und ist in das Webpaket integriert. </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;

Muster: Das Format der Uhrzeit und des Datums, das konvertiert werden muss

Zeitzone: Die Zeit wird auf den East Eighth District eingestellt, um Zeitfehler bei der Konvertierung zu vermeiden

Aufrufschnittstelle: http://localhost:8080/ getUser

Wie SpringBoot Jackson zum Formatieren der Zeit verwendet

Complete , aber das hat auch Nachteile. Wenn ich hundert Entitäten habe, die alle den Typ „Datum“ haben, muss ich Anmerkungen zu hundert Entitäten hinzufügen. Scheint etwas mühsam zu sein.

Die zweite Methode besteht darin, die Standardkonfiguration zu ändern.

Die gesamte JSON-Generierung ist untrennbar mit den zugehörigen HttpMessageConverters verbunden.

SpringBoot verwendet standardmäßig Jackson und konfiguriert es standardmäßig. Also lasst es uns ändern.

Globale Suche nach JacksonHttpMessageConvertersConfiguration. Ideen-Tastenkombination: Strg + Umschalt + R

Wie SpringBoot Jackson zum Formatieren der Zeit verwendet

In dieser Klasse gibt es eine Methode, dieJackson2HttpMessageConverter zuordnet und zur Verarbeitung von JSON verwendet wird.

@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);
}

Beachten Sie, dass es zu dieser Methode zwei Annotationen gibt und die @Bean-Annotation nicht eingeführt wird. Einführung der ConditionalOnMissingBean-Annotation.

@ConditionalOnMissingBean: Wenn die angegebene Bean nicht existiert, instanziieren Sie die aktuelle Bean.

Eine Analogie: Wenn Sie sich für eine Anstellung melden, wird Ihr Unternehmen feststellen, dass Sie einen Computer mitgebracht haben, und Ihnen die Nutzung Ihres eigenen Computers gestatten. Wenn Sie keinen Computer mitbringen, wird Ihnen die Nutzung des Computers des Unternehmens gestattet. SpringBoot macht dasselbe. Wenn Sie es nicht bereitstellen, wird das Standardmodell verwendet.

Neues 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;
    }
}

stellt eine Bean von MappingJackson2HttpMessageConverter bereit, sodass Springboot das verwenden wird, was wir bereitstellen.

Kommentieren Sie die Annotation der Benutzerentität

Wie SpringBoot Jackson zum Formatieren der Zeit verwendet

Rufen Sie die Schnittstelle auf: http://localhost:8080/getUser

Wie SpringBoot Jackson zum Formatieren der Zeit verwendet

OK, diese Methode ist auch möglich.

ObjectMapper bereitstellen

Sie können auch einen ObjectMapper bereitstellen und den oben bereitgestellten MappingJackson2HttpMessageConverter auskommentieren.

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;
}

Aufrufschnittstelle: http://localhost:8080/getUser

Wie SpringBoot Jackson zum Formatieren der Zeit verwendet

Hinweis: Die beiden oben genannten Methoden werden global geändert!

Die dritte Änderung der Konfigurationsdatei

Ändern Sie die Standardkonfiguration in application.yml oder Properties

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

Wenn die Konfiguration für den zweiten und den dritten Weg gleichzeitig vorhanden ist, verwenden Sie den zweiten Weg, Herr .

Wenn alle drei Methoden vorhanden sind, ist das Anmerkungsformat in der Entitätsklasse das Hauptformat.

Das obige ist der detaillierte Inhalt vonWie SpringBoot Jackson zum Formatieren der Zeit verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen