Java 如何在SpringXML配置中重写父方法?

Java 如何在SpringXML配置中重写父方法?,java,xml,spring,javabeans,Java,Xml,Spring,Javabeans,出于某种原因,我的团队使用SpringXML配置而不是Java配置。当我实现一个新的CorsFilter时,我在谷歌上搜索并找到了如下示例Java配置: @Component public class CorsFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(final HttpServletRequest request,

出于某种原因,我的团队使用SpringXML配置而不是Java配置。当我实现一个新的
CorsFilter
时,我在谷歌上搜索并找到了如下示例Java配置:

@Component
public class CorsFilter extends OncePerRequestFilter {

   @Override
   protected void doFilterInternal(final HttpServletRequest request,
                                   final HttpServletResponse response,
                                   final FilterChain filterChain) throws ServletException, IOException {
       response.addHeader("Access-Control-Allow-Origin", "*");
       response
               .addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, PATCH, HEAD, OPTIONS");
       response.addHeader("Access-Control-Allow-Headers",
               "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");
       response.addHeader("Access-Control-Expose-Headers",
               "Access-Control-Allow-Origin, Access-Control-Allow-Credentials");
       response.addHeader("Access-Control-Allow-Credentials", "true");
       response.addIntHeader("Access-Control-Max-Age", 10);
       filterChain.doFilter(request, response);
   }
}

但是如何转换为等效的SpringXML配置呢?我知道我们可以创建一个名为
corsFilter
的bean,并设置一些属性值。但如何重写父方法并在XML配置中执行具有副作用的操作呢?(就像在上面添加标题一样)

如果要在SpringXML中移动所有标题配置,可以在xml中创建一个
Map
对象,然后将
CorsFilter
设置为属性,并在
doFilterInternal
方法中读取相同的内容

//add a spring util namespace xmlns:util="http://www.springframework.org/schema/util
//schemaLocation http://www.springframework.org/schema/util
<util:map id="headerMap" map-class="java.util.HashMap">
    <entry key="Access-Control-Allow-Origin">
        <value>*</value>
    </entry> ....so on
</util:map>

<bean id="corsFilter" class="CorsFilter">
    <property name="header" ref="headerMap"/>
</bean>

public class CorsFilter extends OncePerRequestFilter {
   Map<String,String> header;

   @Override
   protected void doFilterInternal(final HttpServletRequest request,
                                   final HttpServletResponse response,
                                   final FilterChain filterChain) throws ServletException, IOException {
        for(Entry<String,String> entry : header.entrySet()){
          response.addHeader(entry.getKey(), entry.getValue());
        }
       filterChain.doFilter(request, response);
   }
}
//添加spring util命名空间xmlns:util=”http://www.springframework.org/schema/util
//图式定位http://www.springframework.org/schema/util
*
……等等
公共类CorsFilter扩展了OncePerRequestFilter{
地图标题;
@凌驾
受保护的无效doFilterInternal(最终HttpServletRequest请求,
最终HttpServletResponse响应,
最终筛选链(FilterChain)抛出ServletException、IOException{
for(条目:header.entrySet()){
addHeader(entry.getKey(),entry.getValue());
}
filterChain.doFilter(请求、响应);
}
}