Отличный вопрос!
Я написал этот код, чтобы узнать, как это работает.Я включил его в тестовые пакеты.
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
public class ControllerTest {
@LocalServerPort
private int port;
private URL url;
@Autowired
private TestRestTemplate template;
@Before
public void setUp() throws Exception {
this.url = new URL("http://localhost:" + port + "/test?value=a&value=b&value=c");
}
@Test
public void getHello() throws Exception {
ResponseEntity<String> response = template.getForEntity(url.toString(),
String.class);
Assert.assertEquals(HttpStatus.OK, response.getStatusCode());
Assert.assertEquals(response.getBody(), "a");
System.out.println("response = " + response);
}
}
Затем я изменил ваш код так, чтобы он принимал массив строк, и передавал только первый элемент вашему конструктору ответов.
Обратите внимание на изменения вваш код в выражении подписи и возврата.
@GetMapping("/test")
public String search(@RequestParam String[] value) {
System.out.println(value);
return new Response(value[0]);
}
С помощью вашего теста вы теперь можете исследовать использование типа List для параметра запроса и быстро увидеть, как изменилось поведение.