您的位置:首页 > 编程语言 > Java开发

springboot使用注解配置filter以及对象转换

2017-08-31 13:42 1256 查看
其实这部分配置就是从之前xml中提取出来,用注解的方式配置。

1、配置filter

方法一:

1)在application中添加注解@ServletComponentScan

2)写一个filter,用@WebFilter(urlPatterns = “/*”)注解标注

方法二:

1)写一个WebMvcConfig类继承WebMvcConfigurerAdapter

2)使用@EnableWebMvc,@Configuration注解

3)写一个filter的初始化方法,用@Bean注解

4)写一个FilterRegistrationBean的初始化方法,用@Bean注解,在初始化方法中配置之前的filter。

代码见后文。

2、配置拦截器

1)在之前的config类中,写一个拦截器初始化方法,用@Bean注解

2)重写addInterceptors方法, 在其中配置拦截路径以及不拦截 路径

代码见后文。

3、配置对象转换

见后文代码,配置了json格式转换为对象, 已经时间统一格式转换。

@EnableWebMvc
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter{

@Bean
public HandlerInterceptorAdapter handlerInterceptorAdapter(){
return  new HandlerInterceptorAdapter();
}

@Bean
public FilterRegistrationBean characterEncodingFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
//注入过滤器
registration.setFilter(characterEncodingFilter());
//拦截规则
registration.addUrlPatterns("/*");
//过滤器名称
registration.setName("CharacterEncodingFilter");
//过滤器顺序
registration.setOrder(1);
return registration;
}

@Bean
public CharacterEncodingFilter characterEncodingFilter(){
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
return characterEncodingFilter;
}

@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
List<MediaType> supportedMediaTypes = new ArrayList<>();
supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
supportedMediaTypes.add(MediaType.TEXT_HTML);
converter.setSupportedMediaTypes(supportedMediaTypes);
converter.setObjectMapper(objectMapper());
return converter;
}

@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
return objectMapper;
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(handlerInterceptorAdapter()).addPathPatterns("/**");
super.addInterceptors(registry);
}

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(mappingJackson2HttpMessageConverter());
super.configureMessageConverters(converters);
}

}


也可以在xml文件中配置,在application中使用注解@ImportResource(“classpath:beanRefContext.xml”),配置引入的xml文件。

在此xml文件中配置filter,interceptor,对象转换

这里额外记录一下对象转换的xml配置

<mvc:annotation-driven>
<mvc:message-converters>
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
<property name="objectMapper">
<bean class="org.codehaus.jackson.map.ObjectMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss"/>
</bean>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: