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