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

来源:互联网 发布:阿基米德软件下载 编辑:程序博客网 时间:2024/06/06 12:21

其实这部分配置就是从之前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@Configurationpublic 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>
原创粉丝点击