Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Java 新的春天和杰克逊2。这个bean声明在SpringMVC应用程序中允许什么?_Java_Spring_Spring Mvc_Resttemplate - Fatal编程技术网

Java 新的春天和杰克逊2。这个bean声明在SpringMVC应用程序中允许什么?

Java 新的春天和杰克逊2。这个bean声明在SpringMVC应用程序中允许什么?,java,spring,spring-mvc,resttemplate,Java,Spring,Spring Mvc,Resttemplate,我继承了一个基本上有几个控制器的SpringMVC项目。我在一个xml文件中发现了一个声明。显然,这个声明允许编写基于rest的服务和客户端。有人能用一个例子来解释这些声明所带来的明显的魔力吗 <bean id="restClient" class="org.springframework.web.client.RestTemplate"> <property name="messageConverters"> <util:list>

我继承了一个基本上有几个控制器的SpringMVC项目。我在一个xml文件中发现了一个声明。显然,这个声明允许编写基于rest的服务和客户端。有人能用一个例子来解释这些声明所带来的明显的魔力吗

<bean id="restClient" class="org.springframework.web.client.RestTemplate">
    <property name="messageConverters">
        <util:list>
            <bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
            <bean id="formMessageConverter" class="org.springframework.http.converter.FormHttpMessageConverter"/>
        </util:list>
    </property>
</bean>


提前感谢。

spring提供的resttemplate,用于在网络服务调用期间将java对象转换为所需的输出(html字符串、xml、json等),并插入服务,从服务接收到的响应将被解组回java对象或所需的数据类型

<property name="messageConverters">
    <util:list>
        <bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
        <bean id="formMessageConverter" class="org.springframework.http.converter.FormHttpMessageConverter"/>
        <bean id="messageConverter"
                    class="org.springframework.http.converter.StringHttpMessageConverter" />

    </util:list>

  //marhsaller and unmarshaller

    <bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
    <property name="marshaller" ref="jaxbMarshaller"></property>
    <property name="unmarshaller" ref="jaxbMarshaller"></property>
    <property name="supportedMediaTypes">
    <list>
       <value>application/xml</value>
       <value>text/xml</value>
       <value>json</value>
     </list>
</property>
某些代码为1的服务响应有效,而代码为0的服务响应无效

class ValidUser{
   int validCode;
}
首先,您需要马歇尔到任何可接受的数据类型,让我们有application/xml

我在这里所做的就是通过配置文件

在上面的配置中,我添加了jaxb封送器和解封送器(请参见上面的配置)

我已经配置了封送器和解封器,并且我正在告诉在封送和解封时应该使用哪些可接受的数据类型

最后,下面的配置告诉java对象在编组(request.User将被转换为xml)和解组(xml将转换回response.validUser)过程中是可以接受的


com.request.user
com.response.validUser
下面是java代码

在这里,您可以直接传递java对象,resttemplate将毫不费事地对其进行整理

        User user = new User();
        user.setName('test');
        user.setPassword('password');
        // setting media type as xml, and telling convert my user java obj to xml
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_XML);
        HttpEntity<User> entity = new   HttpEntity<User>   (user , headers);

        ResponseEntity<validUser> responseEntity = rest.exchange(URL, HttpMethod.POST, entity, validUser.class);
    // let us assume that service response for valid user <validCode>1<validCode>
    //then validuserreponse obj will have code as 1, let us say valid user.
    ValidUser validUserResponse = responseEntity.getBody();
User User=新用户();
user.setName('test');
user.setPassword(“密码”);
//将媒体类型设置为xml,并告诉我如何将我的用户java obj转换为xml
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.APPLICATION\uXML);
HttpEntity=新的HttpEntity(用户、标题);
ResponseEntity ResponseEntity=rest.exchange(URL,HttpMethod.POST,entity,validUser.class);
//让我们假设有效用户1的服务响应
//然后ValidUserReportonse obj的代码将为1,我们假设为ValidUser。
ValidUser validUserResponse=responseEntity.getBody();
像wise一样,您也可以处理纯html文本

headers.setContentType(MediaType.TEXT_HTML);

    HttpEntity<String> entity = new HttpEntity<String>(htmlString, headers);
    ResponseEntity<String> htmlStringresponse = rest.postForEntity(URL, entity, String.class);
headers.setContentType(MediaType.TEXT\uHTML);
HttpEntity=新的HttpEntity(htmlString,标题);
ResponseEntity htmlStringresponse=rest.postForEntity(URL、实体、字符串、类);
如果您看到,上面的java代码没有任何消息转换器代码、封送器和解封器逻辑,所有这些都是使用spring配置在一行程序中完成的

通过检查。然后阅读javadoc以获取更多信息。
        User user = new User();
        user.setName('test');
        user.setPassword('password');
        // setting media type as xml, and telling convert my user java obj to xml
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_XML);
        HttpEntity<User> entity = new   HttpEntity<User>   (user , headers);

        ResponseEntity<validUser> responseEntity = rest.exchange(URL, HttpMethod.POST, entity, validUser.class);
    // let us assume that service response for valid user <validCode>1<validCode>
    //then validuserreponse obj will have code as 1, let us say valid user.
    ValidUser validUserResponse = responseEntity.getBody();
headers.setContentType(MediaType.TEXT_HTML);

    HttpEntity<String> entity = new HttpEntity<String>(htmlString, headers);
    ResponseEntity<String> htmlStringresponse = rest.postForEntity(URL, entity, String.class);