Производит ли @RequestMapping чувствительность к порядку значений?

Этот вопрос основан наэтот вопрос.

С предоставленными комментариями я написал три разных теста для проверки правильности установки типов контента.

@Test
public void testGetImageJpg_ShouldSucceed() throws Exception {
    File testImage = new File(TestConstants.TEST_IMAGE_JPG);
    byte[] expectedBytes = IOUtils.toByteArray(new FileInputStream(testImage));
    when(service.getImage(anyString(), anyString())).thenReturn(testImage);
    mockMvc.perform(get("/getImage/id/bla.jpg").sessionAttrs(session))
            .andExpect(status().isOk()).andExpect(content().contentType(MediaType.IMAGE_JPEG))
            .andExpect(content().bytes(expectedBytes));

}

@Test
public void testGetImagePng_ShouldSucceed() throws Exception {
    File testImage = new File(TestConstants.TEST_IMAGE_PNG);
    byte[] expectedBytes = IOUtils.toByteArray(new FileInputStream(testImage));
    when(service.getImage(anyString(), anyString())).thenReturn(testImage);
    mockMvc.perform(get("/getImage/id/bla.png").sessionAttrs(session))
            .andExpect(status().isOk()).andExpect(content().contentType(MediaType.IMAGE_PNG))
            .andExpect(content().bytes(expectedBytes));

}

@Test
public void testGetImageGif_ShouldSucceed() throws Exception {
    File testImage = new File(TestConstants.TEST_IMAGE_GIF);
    byte[] expectedBytes = IOUtils.toByteArray(new FileInputStream(testImage));
    when(service.getImage(anyString(), anyString())).thenReturn(testImage);
    mockMvc.perform(get("/getImage/id/bla.gif").sessionAttrs(session))
            .andExpect(status().isOk()).andExpect(content().contentType(MediaType.IMAGE_GIF))
            .andExpect(content().bytes(expectedBytes));

}

Это мой контроллер, где все тесты пройдены успешно:

@RequestMapping(value="/getImage/{id}/{path}", produces = {"image/png","image/jpeg","image/gif"})
@ResponseBody
byte[] getImage(@PathVariable("id") String id,
        @PathVariable("path") String path) throws ImageNotFoundException {      
    File imageFile = service.getImage(id, path);
    InputStream in;        
    try {
        in = new FileInputStream(imageFile);
        return IOUtils.toByteArray(in);
    } catch (IOException e) {           
        throw new ImageNotFoundException();
    }
}

Но когда я изменяю порядок производства производит на

produces = {"image/jpeg","image/png","image/gif"}

Тест на png не проходит:

java.lang.AssertionError: Content type expected:<image/png> but was:<image/jpeg>

Я немного запутался, что изменение порядка значений приводит к разным результатам.

Кто-нибудь наблюдал это, это баг или я что-то упустил?

Ответы на вопрос(0)

Ваш ответ на вопрос