Was ist der Zweck von und content-negotiation-manager
im Frühjahr? Wir haben dies in unserem Frühling appContext, aber ich bin mir nicht sicher über seinen Zweck.Was ist der Zweck von Conversion-Service und Content-Negotiation-Manager im Frühjahr?
Für content-negotiation-manager
:
Ich habe hier gelesen: http://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-config-content-negotiation, dass die inhaltlichen verhandlungs Manager verhält sich wie ein 'Resolver' für @RequestMapping
- z.B. Wenn meine Zuordnungs-URL "/ person/create" lautet, wird sie aufgerufen, wenn der Client auf /person/create.json und /person/create.html zugreift (bei der folgenden Konfiguration).
Ich bin auch in der Lage /person/list.xml zugreifen und es gibt ein XML-Ergebnis auch wenn xml nicht in den content-negotiation-manager
definiert ist, da ich die Jackson in meinem Classpath habe:
Für Dateierweiterungen in Der Anforderungs-URI, die MVC-Java-Konfiguration und der MVC-Namespace registrieren automatisch Erweiterungen wie .json, .xml, .rss und .atom, wenn die entsprechenden Abhängigkeiten wie Jackson, JAXB2 oder Rome im Klassenpfad vorhanden sind .
Also haben wir die content-negotiation-manager
definiert, da wir HTML unterstützen, und es ist nicht standardmäßig zugeordnet. Ist mein Verständnis richtig?
Für :
In unseren Klassen, haben wir ein ObjectMapper.readValue(json, Obj.class)
und @RestController
ein Objekt in XML/JSON-Format Rückkehr auf die Anfrage nach (es ein XML-Format zurückgibt, wenn Sie /list.xml zugreifen und gibt das JSON-Format zurück, wenn Sie auf /list.json zugreifen. Aber ich habe gelesen, dass @RestController ohne den Konvertierungsdienst arbeiten kann. So bin ich nicht sicher, warum es in der <mvc:annotation-driven>
<mvc:annotation-driven conversion-service="conversionService" content-negotiation-manager="contentNegotiationManager"/>
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="html" value="text/html"/>
</map>
</property>
<property name="defaultContentType" value="application/json"/>
</bean>