springboot笔记

1、一个http请求,先走filter,到达servlet后才进行拦截器。(所以CorsFilter比CorsRegistry先执行)

2、jackson将对象转json:字段全部返回,将null值转为""

public static ObjectMapper nullToEmptyStr(Jackson2ObjectMapperBuilder builder) {
        ObjectMapper objectMapper = builder.createXmlMapper(false).build();

        // 通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化
        // Include.Include.ALWAYS 默认
        // Include.NON_DEFAULT 属性为默认值不序列化
        // Include.NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化,则返回的json是没有这个字段的。这样对移动端会更省流量
        // Include.NON_NULL 属性为NULL 不序列化,就是为null的字段不参加序列化
        //objectMapper.setSerializationInclusion(Include.NON_EMPTY);

        // 字段保留,将null值转为""
        objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer() {
            @Override
            public void serialize(Object o, JsonGenerator jsonGenerator,
                                  SerializerProvider serializerProvider)
                    throws IOException, JsonProcessingException {
                jsonGenerator.writeString("");
            }
        });
        return objectMapper;
    } 
  

3、springboot统一设置request的header头

public static Docket getHeaderDocket() {
        ParameterBuilder ticketPar = new ParameterBuilder();
        List pars = new ArrayList();
        ticketPar.name("loginName").description("用户账号")
                .modelRef(new ModelRef("string")).parameterType("header")
                .required(true).build(); //header中的loginNamey参数非必填,不能传空
        pars.add(ticketPar.build());    //根据每个方法名也知道当前方法在设置什么参数

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build()
                .useDefaultResponseMessages(false)
                .globalOperationParameters(pars);
    }
    static ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Service API")
                .description("Swagger API 文档")
                .termsOfServiceUrl("https://www.xxx.com")
                .version("v1.0")
                .contact(new Contact("sinopec", "https://www.xxx.com", "[email protected]"))
                .build();
    }

4、开启注解事务管理

@EnableTransactionManagement // 开启注解事务管理,等同于xml配置文件中的

你可能感兴趣的:(java,spring)