SpringBoot追加自定义的MessgeConverter

自定义messageConverter

@Configuration
public class WebConfiguration implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        //时间格式统一,特别的可用JsonFormat注解
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        converter.setObjectMapper(objectMapper);
        //自定义null序列化
        //MappingJackson2HttpMessageConverter 默认对null对象 返回的null,不属于任何类型的。并且没有对null对象做区分管理(例如
        // 空数组返回[] ,空map返回{} ,如果需要这中的,可以自定义NullValueSerializer)
        objectMapper.getSerializerProvider().setNullValueSerializer(new NullJsonSerializer());
//        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);//为null的字段自动屏蔽下,不返回
        //优先级高于springboot auto config 的
        converters.add(0, converter);
    }
}
public class NullJsonSerializer extends JsonSerializer<Object> {
    @Override
    public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        //空值直接返回空串
        jsonGenerator.writeString(StringUtils.EMPTY);
    }
}

注意事项

  • 建议是用implement WebMvcConfigurer 的方式,不要使用 extend WebMvcConfigurationSupport + @EnableWebMvc ,因为@EnableWebMvc 是全权负责Springboot的自动配置,搞不好,启动项目后一顿错
  • MessageConverter 记得要排在spring boot 的converter 的同类型的前面,否则放在最后,无法生效
  • 如果某特殊的Date的格式化不按照 yyyy-MM-dd HH:mm:ss 的方式,可以在字段上,或者 get方法上,追加@JsonFormat ,注意是com.fasterxml.jackson.annotation 里的
Spring Boot Security 自定义 logout 追加回调通常是在需要在用户注销(logout)时执行额外操作的情况。你可以通过实现 `ApplicationLogoutListener` 接口或者覆盖 `SecurityConfiguration` 类中的 `configureGlobal` 或者 `configure` 方法来自定义注销过程。 首先,创建一个自定义的监听器: ```java import org.springframework.context.event.EventListener; import org.springframework.security.authentication.event.LogoutSuccessEvent; public class CustomLogoutListener { @EventListener public void handleLogoutSuccess(LogoutSuccessEvent event) { String username = (String) event.getAuthentication().getName(); System.out.println("User " + username + " has logged out successfully."); // 执行你的其他业务逻辑,如清空缓存、删除session数据等 // ... } } ``` 然后,在 Spring Boot 容器启动时注册这个监听器: ```java @Configuration public class AppConfig { @Bean public CustomLogoutListener customLogoutListener() { return new CustomLogoutListener(); } // 如果你使用的是 WebSecurityConfigurerAdapter // @Override // protected void configure(HttpSecurity http) throws Exception { // // ... // http.addLogoutSuccessHandler(customLogoutListener()); // } // 或者如果你使用的是 SecurityConfig // @Autowired // private SecurityFilterChain filterChain; // // @Override // public void configure(WebSecurity web) throws Exception { // // ... // web.logout().addLogoutSuccessHandler(customLogoutListener()); // } } ``` 这样,每当有用户成功注销时,`handleLogoutSuccess` 方法会被调用并执行相应的回调操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值