Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建同一spring控制器的两个实例,每个实例具有不同的base@requestMapping_Spring_Spring Mvc - Fatal编程技术网

如何创建同一spring控制器的两个实例,每个实例具有不同的base@requestMapping

如何创建同一spring控制器的两个实例,每个实例具有不同的base@requestMapping,spring,spring-mvc,Spring,Spring Mvc,我有一个spring控制器(MyController),它将数据作为json服务 通过一些配置更改,我将能够重用相同的控制器,并让它以xml而不是json的形式提供相同的数据 我希望能够创建myControllerInstanceA,并将其配置为使用/json作为基本url,然后创建myControllerInstanceB并将其使用/xml作为基本url 我能想到的唯一方法是将MyController子类化,并将子类的@requestMapping设置为/xml。我希望能够在springap-

我有一个spring控制器(MyController),它将数据作为json服务

通过一些配置更改,我将能够重用相同的控制器,并让它以xml而不是json的形式提供相同的数据

我希望能够创建myControllerInstanceA,并将其配置为使用/json作为基本url,然后创建myControllerInstanceB并将其使用/xml作为基本url

我能想到的唯一方法是将MyController子类化,并将子类的@requestMapping设置为/xml。我希望能够在springap-servlet.xml中进行一些配置,以实现相同的效果

这可能吗

我猜你们中的一些读到这篇文章的春季奇才可能会想“他为什么要这么做?”。因此,我将解释我正在使用的技术:我正在创建一个控制器,它将简单的JavaBean添加到ModelAndView中。控制器也会显示一个视图。该视图获取JavaBean并将其序列化为json或xml,具体取决于控制器的配置方式。我认为可能有一种更像春天的方式来做到这一点,但这种方法似乎足够简单和直接。此外,它还允许我使用熟悉的JSON库,而不是Spring似乎设置好要使用的JSON库。任何告诉我Spring方法的人的要点——如何轻松地提供与json或xml相同的数据,尽可能重用控制器代码。

用于解析视图。此解析将使用不同的配置视图根据请求的Accepts标头或扩展呈现模型。默认情况下,JSON使用MappingJacksonJsonView,您必须配置一个Xml封送器,以便与封送视图一起使用

通过这种配置,您可以让每个带注释的方法支持无限数据格式


看看这个。

我不确定您是否要求这样做,但是Spring 3有ContentNegotiationResolver,它可以帮助返回json或xml:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="mediaTypes">
        <map>
            <entry key="xml" value="application/xml"/>
            <entry key="json" value="application/json"/>
        </map>  
    </property>
</bean>
@Controller
class MyClass(){
    @RequestMapping(value={"/yourURL.json", "/yourURL.xml"})
    public Object yourController(){
        return Object
    }
}