Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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 使用RestTemplate测试Spring数据Rest端点在SpringBoot 2.0.0.BUILD-SNAPSHOT中不起作用_Java_Spring Boot_Spring Data Jpa_Spring Data Rest - Fatal编程技术网

Java 使用RestTemplate测试Spring数据Rest端点在SpringBoot 2.0.0.BUILD-SNAPSHOT中不起作用

Java 使用RestTemplate测试Spring数据Rest端点在SpringBoot 2.0.0.BUILD-SNAPSHOT中不起作用,java,spring-boot,spring-data-jpa,spring-data-rest,Java,Spring Boot,Spring Data Jpa,Spring Data Rest,我使用SpringDataREST将SpringDataJPA存储库公开为REST端点 @Entity @Table(name = "USERS") public class User implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; private String em

我使用SpringDataREST将SpringDataJPA存储库公开为REST端点

@Entity
@Table(name = "USERS")
public class User implements Serializable
{
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String name;
    private String email;
    private String password;
}

public interface UserRepository extends JpaRepository<User, Integer>
{
}
@实体
@表(name=“USERS”)
公共类用户实现可序列化
{
@Id@GeneratedValue(策略=GenerationType.IDENTITY)
私有整数id;
私有字符串名称;
私人字符串电子邮件;
私有字符串密码;
}
公共接口用户存储库扩展了JpaRepository
{
}
使用SpringBoot 1.5.3.RELEASE时,我可以使用RestTemplate测试端点,如下所示:

@Test
public void testGetUsers()
{
    RestTemplate restTemplate = restTemplate();

    ResponseEntity<PagedResources<User>> responseEntity = 
            restTemplate.exchange(
                            "http://localhost:8080/users",
                            HttpMethod.GET, 
                            null, 
                            new ParameterizedTypeReference<PagedResources<User>>()
                            {}, 
                            Collections.emptyMap()
                            );
    PagedResources<User> userResource = responseEntity.getBody();
    Collection<User> users = userResource.getContent();
    assertNotNull(users);
}

protected RestTemplate restTemplate() 
{
      ObjectMapper mapper = new ObjectMapper();
      mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
      mapper.registerModule(new Jackson2HalModule());

      MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
      converter.setSupportedMediaTypes(MediaType.parseMediaTypes("application/hal+json"));
      converter.setObjectMapper(mapper);
      return new RestTemplate(Collections.<HttpMessageConverter<?>> singletonList(converter));
}
@测试
public void testGetUsers()
{
RestTemplate RestTemplate=RestTemplate();
响应响应响应响应=
restTemplate.exchange(
"http://localhost:8080/users",
HttpMethod.GET,
无效的
新的ParameteredTypeReference()
{}, 
Collections.emptyMap()
);
PagedResources userResource=responseEntity.getBody();
集合用户=userResource.getContent();
assertNotNull(用户);
}
受保护的RestTemplate RestTemplate()
{
ObjectMapper mapper=新的ObjectMapper();
configure(在未知属性上反序列化feature.FAIL,false);
registerModule(新Jackson2HalModule());
MappingJackson2HttpMessageConverter=新的MappingJackson2HttpMessageConverter();
setSupportedMediaTypes(MediaType.parseMediaTypes(“application/hal+json”);
setObjectMapper(映射器);

返回新的RestTemplate(收集。我可以看到您正在自己创建
ObjectMapper
,因此我不确定Spring Boot是如何参与其中的。我尝试了自动连接ObjectMapper,并将其与MappingJackson2HttpMessageConverter一起注册。但仍然不起作用。顺便说一句,即使我创建了ObjectMap实例,它在1.5.3中也可以正常工作per.@K.sivaprasadeddy:请调查一下这个问题。我想你在谈论同一个问题。
org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [org.springframework.hateoas.PagedResources<com.myapp.entities.User>] and content type [application/hal+json;charset=UTF-8]
    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:117)
    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:946)
    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:930)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:684)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:650)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:598)
    at com.myapp.demo.SpringbootDataRestDemoApplicationTest.testGetUsers(SpringbootDataRestDemoApplicationTest.java:53)
@RunWith(SpringRunner.class)
@SpringBootTest(classes=DemoApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class DemoApplicationTests
{

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    public void testGetUsers()
    {
        ResponseEntity<PagedResources<User>> responseEntity =
                restTemplate.exchange("/users",
                                        HttpMethod.GET, 
                                        null, 
                                        new ParameterizedTypeReference<PagedResources<User>>() {}
                                        );
        assertTrue(responseEntity.getStatusCode() == HttpStatus.OK);
        PagedResources<User> userResource = responseEntity.getBody();
        Collection<User> users = userResource.getContent();
        assertNotNull(users);
        assertEquals(3, users.size());
    }   
}