Créez le projet, ajoutez des dépendances
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency>
Créez la classe d'entité UserDTO
Ajoutez des attributs et omettez les méthodes get et set.
private String id; private String username; private Date createTime;
Créer un contrôleur utilisateur
Écrivez le code de la couche de contrôle
@RestController public class UserController { @GetMapping("/getUser") public List<userdto> getUser() { List<userdto> userList = new ArrayList<userdto>(); for (int i=1; i<p>Appelez l'interface : http://localhost:8080/getUser</p> <p><img src="https://img.php.cn/upload/article/000/887/227/168501804652134.png" alt="Comment SpringBoot utilise Jackson pour formater lheure"></p> <p>Le résultat n'est évidemment pas ce dont nous avons besoin, nous devons donc formater l'heure. Et il y a un problème de fuseau horaire, mon heure actuelle est 22h44. </p> <h4>La première méthode consiste à utiliser des annotations<br> </h4> <p>Ajoutez l'annotation @JsonFormat sur les champs qui doivent être convertis. Cette annotation provient de Jackson et est intégrée au package Web. </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;
modèle : le format de l'heure et de la date qui doivent être convertis
fuseau horaire : l'heure est réglée sur le huitième district de l'Est pour éviter les erreurs de temps lors de la conversion
Interface d'appel : http://localhost:8080/ getUser
Complete , mais cela présente aussi des inconvénients Si j'ai cent entités qui ont toutes le type Date, alors je dois ajouter des annotations à cent entités. Cela semble un peu gênant.
Toute génération json est indissociable des HttpMessageConverters associés
SpringBoot utilise jackson par défaut et le configure par défaut. Alors modifions-le.
Recherche globale de JacksonHttpMessageConvertersConfiguration. Touche de raccourci idée : Ctrl + shift + r
Il existe une méthode mappingJackson2HttpMessageConverter dans cette classe qui est utilisée pour traiter json.
@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); }
Notez qu'il y a deux annotations sur cette méthode, et l'annotation @Bean ne sera pas introduite. Introduisez l'annotation ConditionalOnMissingBean.
@ConditionalOnMissingBean : Lorsque le bean donné n'existe pas, instanciez le bean actuel.
Une analogie : lorsque vous vous présentez à un emploi, votre entreprise verra que vous avez apporté un ordinateur et vous permettra d'utiliser votre propre ordinateur. Si vous n'apportez pas d'ordinateur, elle vous laissera utiliser l'ordinateur de l'entreprise. SpringBoot fait la même chose si vous ne le fournissez pas, il utilisera celui par défaut.
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; } }
fournit un Bean de MappingJackson2HttpMessageConverter, donc Springboot utilisera ce que nous fournissons.
Annoter l'annotation de l'entité Utilisateur
Appelez l'interface : http://localhost:8080/getUser
OK, cette méthode est également possible.
Provide ObjectMapper
Vous pouvez également fournir un ObjectMapper et commenter le MappingJackson2HttpMessageConverter fourni ci-dessus.
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; }
Interface d'appel : http://localhost:8080/getUser
Remarque : les deux méthodes ci-dessus sont globalement modifiées !
Modifier la configuration par défaut dans application.yml ou propriétés
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
Si la configuration de la deuxième et de la troisième voies existent en même temps, utilisez la deuxième voie Seigneur .
Si les trois méthodes existent, le format d'annotation dans la classe d'entité sera le principal.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!