【问题标题】:I would like to know how to convert Spring mvc Java configuration environment我想知道如何转换Spring mvc Java配置环境
【发布时间】:2016-11-30 14:36:56
【问题描述】:

Spring mvc .xml文件我想在配置的时候把bean配置改成java config环境。

dispatcher-servlet.xml 文件

<bean class="pporan.maven.framework.spring.CustomRequestMappingHandlerAdapter">
    <property name="customArgumentResolvers" ref="eDataArgumentResolver"></property>
</bean> 

<bean id="eDataArgumentResolver" class="pporan.maven.framework.spring.EDataArgumentResolver"/>

CustomRequestMappingHandlerAdapter.class文件内容

public class CustomRequestMappingHandlerAdapter implements RequestMappingHandlerAdapter {

  @Override
  public void afterPropertiesSet() {
      // TODO Auto-generated method stub
      super.afterPropertiesSet();
       .........             
       setArgumentResolvers(list);
  }
}

EDataArgumentResolver.class 文件内容

public class EDataArgumentResolver implements HandlerMethodArgumentResolver {

@Override
public Object resolveArgument(MethodParameter methodParameter,
            ModelAndViewContainer modelAndViewContainer,
            NativeWebRequest nativeWebRequest,
            WebDataBinderFactory webDataBinderFactory) throws Exception {

    HttpServletRequest request = (HttpServletRequest) nativeWebRequest.getNativeRequest();
    ......

        return eData;
    }
}

  @Override
  public boolean supportsParameter(MethodParameter methodParameter) {
      return methodParameter.getParameterType().equals(EData.class);
  }
}

我一个一个弄成这样。

我想知道如何在 java config 环境中做到这一点

【问题讨论】:

  • 你有什么特别尝试但没有奏效的?您只是向我们展示了 Servlet xml 上下文和两个 bean 定义..

标签: java xml spring model-view-controller config


【解决方案1】:

我没有时间实际尝试一下,但你应该可以这样做:

@Configuration
public YourConfigClass {

    ...

    @Bean
    public HandlerMethodArgumentResolver eDataArgumentResolver() {
        return new HandlerMethodArgumentResolver() {
            @Override
            public boolean supportsParameter(MethodParameter parameter) {
                parameter.getParameterType().equals(EData.class);
            }

            @Override
            public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest,
                WebDataBinderFactory binderFactory) throws Exception {
                HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest();

                [...]

                return eData;
            }
        };
    }

    @Bean
    public RequestMappingHandlerAdapter requestMappingHandlerAdapter(final HandlerMethodArgumentResolver eDataArgumentResolver) {
        final RequestMappingHandlerAdapter requestMappingHandlerAdapter = new RequestMappingHandlerAdapter();
        requestMappingHandlerAdapter.setCustomArgumentResolvers(Collections.singletonList(eDataArgumentResolver));
        return requestMappingHandlerAdapter;
    }
}

很高兴让我知道它是否有效!

【讨论】:

  • @user3648971 不客气。我很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-16
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-03
相关资源
最近更新 更多