业务需求是有一个医院咨询师的标签表,需要关联咨询师ID,医院ID,和标签id ; 点击咨询师会显示这个咨询师关联的所有标签(标签ID和医院ID)简单的讲就是需要通过咨询师ID在同一张表中查出医院ID和标签ID查出来是一个list,并通过这两个ID去对应的表中查出数据,在service层中给list中每个实体类都赋上医院实体类和标签实体类.
出现的问题是list中有重复的实体类就会出现如下情况
通过百度找到的解决办法是json转换的问题.
package com.hykj.hospital.config;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
/**
* file: CustomWebMvcConfigurerAdapter.java
* Created by jiaobuchong on 12/23/15.
*/
@Configuration //标注此文件为一个配置项,spring boot才会扫描到该配置。该注解类似于之前使用xml进行配置
public class CustomWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
@Autowired
private MainInterceptor mainInterceptor;
@Autowired
private AdminInterceptor adminInterceptor;
@Bean
public HttpMessageConverter<String> responseBodyConverter() {
StringHttpMessageConverter converter = new StringHttpMessageConverter(
Charset.forName("UTF-8"));
return converter;
}
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
converters.add(responseBodyConverter());
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue,SerializerFeature.DisableCircularReferenceDetect);
//处理中文乱码问题
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastConverter.setSupportedMediaTypes(fastMediaTypes);
fastConverter.setFastJsonConfig(fastJsonConfig);
converters.add(fastConverter);
}
@Override
public void configureContentNegotiation(
ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false);
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(mainInterceptor).addPathPatterns("/**"); //对来自/user/** 这个链接来的请求进行拦截
registry.addInterceptor(adminInterceptor).addPathPatterns("/admin/**");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/files/**").addResourceLocations("file:"+Config.FilePath);
}
}