๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Spring

๋™์  ๋ฆฌ์ŠคํŠธ ๋ฐ”์ธ๋”ฉ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ (java.lang.IndexOutOfBoundsException: Index: 256, Size: 256)

by ํ‘์‹œ๋ฐ” 2023. 6. 6.

๐Ÿ“Œ ๋ฐฐ๊ฒฝ

ํ•œ ํ–‰์— ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋„๋ก ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ๋Œ€๋Ÿ‰ ์—…๋ฐ์ดํŠธ ๊ณผ์ •์—์„œ ๋™์ ๋ฆฌ์ŠคํŠธ ๋ฐ”์ธ๋”ฉ ๋ฌธ์ œ๋ฅผ ๋งˆ์ฃผ์น˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ 256๊ฐœ ์ด์ƒ์ด ๋„˜์–ด๊ฐ€๋‹ˆ IndexOutOfBoundsException์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

๐Ÿ”Ž ์›์ธ

์Šคํ”„๋ง์—์„œ๋Š” DataBinder ์—์„œ ๋™์ ๋ฆฌ์ŠคํŠธ ๋ฐ”์ธ๋”ฉ์˜ ๊ธฐ๋ณธ์„ค์ • ์ตœ๋Œ€ ํฌ๊ธฐ๊ฐ€ 256๊ฐœ๋กœ ์ œํ•œ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์ด๋‹ค. DataBinder ํด๋ž˜์Šค๋ฅผ ์ฐพ์•„๋ณด๋ฉด ์•„๋ž˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด ๊ธฐ๋ณธ ์ œํ•œ์ด 256์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค.

 

โ—๏ธ ํ•ด๊ฒฐ

์„ค์ •์ƒ์˜ ๋ฌธ์ œ์ด๋ฏ€๋กœ ์ปฌ๋ ‰์…˜์˜ ์ œํ•œ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ ค์ฃผ๋ฉด ๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค์— ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

@InitBinder
public void initBinder(WebDataBinder binder) {
	binder.setAutoGrowNestedPaths(true);
	binder.setAutoGrowCollectionLimit(5000);
}

 

setAutoGrowNestedPaths

- true์ธ ๊ฒฝ์šฐ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์ธ๋ฑ์Šค์— ์•ก์„ธ์Šคํ•  ๋•Œ ์ปฌ๋ ‰์…˜ ์š”์†Œ์˜ ์ž๋™ ์ฆ๊ฐ€๋ฅผ ํ™œ์„ฑํ™”ํ•ด ์ค€๋‹ค.

 

setAutoGrowCollectionLimit

- ๊ธฐ๋ณธ๊ฐ’์€ 256์ด๋ฉฐ, ๋ฐฐ์—ด ๋ฐ ์ปฌ๋ ‰์…˜ ์ž๋™ ์ฆ๊ฐ€์— ๋Œ€ํ•œ ์ œํ•œ์„ ์ง€์ •ํ•œ๋‹ค.

REFERENCE

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/validation/DataBinder.html

 

๋Œ“๊ธ€