spring

Bean Validation ์ด๋ž€? ๋จผ์ € Bean Validation์€ ํŠน์ •ํ•œ ๊ตฌํ˜„์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ Bean Validation 2.0(JSR-380)์ด๋ผ๋Š” ๊ธฐ์ˆ  ํ‘œ์ค€์ด๋‹ค. ์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐํ•ด์„œ ๊ฒ€์ฆ ์• ๋…ธํ…Œ์ด์…˜๊ณผ ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Œ์ด๋‹ค. Bean Validation์„ ๊ตฌํ˜„ํ•œ ๊ธฐ์ˆ ์ค‘์— ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌํ˜„์ฒด๋Š” ํ•˜์ด๋ฒ„๋„ค์ดํŠธ Validator์ด๋‹ค. ๊ณต์‹ ์‚ฌ์ดํŠธ: http://hibernate.org/validator/ ๊ณต์‹ ๋ฉ”๋‰ด์–ผ: https://docs.jboss.org/hibernate/validator/6.2/reference/en-US/html_single/ ๊ฒ€์ฆ ์• ๋…ธํ…Œ์ด์…˜ ๋ชจ์Œ: https://docs.jboss.org/hibernate/validator/6.2/reference/en-US/ html_s..
๋ฉ”์„ธ์ง€ ๋ฉ”์„ธ์ง€๋ฅผ ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ(messages.properties ํŒŒ์ผ์—์„œ ๊ด€๋ฆฌ) ๋ฌธ์ž์—ด์„ ํ•˜๋“œ์ฝ”๋”ฉํ•˜์ง€ ์•Š๊ณ  ํŒŒ์ผ์— ์žˆ๋Š” ๊ฐ’์„ ์ฝ์–ด์™€์„œ ๋ณด์—ฌ์ค€๋‹ค. item=์ƒํ’ˆ item.id=์ƒํ’ˆ ID item.itemName=์ƒํ’ˆ๋ช… item.price=๊ฐ€๊ฒฉ item.quantity=์ˆ˜๋Ÿ‰ ๊ตญ์ œํ™” ๋‚˜๋ผ๋ณ„๋กœ ๋ฉ”์„ธ์ง€ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•ด์„œ ๊ฐ ์–ธ์–ด์— ๋งž๋Š” ๋ฉ”์„ธ์ง€ ํŒŒ์ผ์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ. ์œ ์ €๊ฐ€ ์ ‘๊ทผํ•œ ๋‚˜๋ผ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ HTTP accept-language ํ—ค๋” ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜๊ฒŒ ํ•˜๊ณ  ์ฟ ํ‚ค ๊ฐ’์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค. -> LocaleResolver ์‚ฌ์šฉ Locale์ด en_US ์˜ ๊ฒฝ์šฐ messages_en_US -> messages_en -> messages ์ˆœ์„œ๋กœ ์ฐพ๋Š”๋‹ค. ๊ตฌ์ฒด์ ์ธ ๊ฒƒ์ด ์žˆ์œผ๋ฉด ๊ตฌ..
Spring @RestController ์‘๋‹ต ์‹œ, ์ •์˜ ๋˜์ง€ ์•Š์€ ๊ฐ’๋„ ๊ฐ™์ด ์‘๋‹ต๋˜๋Š” ์ด์œ  @Getter @Setter public class UserDomain { private String name; private int age; public boolean isTwenties() { if (this.age >= 20 && this.age < 30){ return true; } return false; } } ์œ„์™€ ๊ฐ™์ด, ๋„๋ฉ”์ธ ๊ฐ์ฒด ์•ˆ์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ํฌํ•จ๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด๋ณด์ž. isTwenties() ๋Š” ํ˜„์žฌ User์˜ ๋‚˜์ด๋ฅผ ํŒ๋‹จํ•˜์—ฌ 20๋Œ€์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. @RestController public class UserController { @GetMapping("/u..
Spring REST Docs ๊ฐœํ–‰ ๋ฐ”๋กœ ๊ฐœํ–‰ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์•ˆ๋˜๊ณ , ๋ฌธ์ž์—ด์•ˆ์— + ๋ช…์‹œ ํ›„ \n ์ž…๋ ฅ // ๊ฐœํ–‰์ „ ๋ฌธ์ž์—ด์— ํ•œ์นธ(์ŠคํŽ˜์ด์Šค) ๋„๊ณ  + ์ž…๋ ฅ // ๊ทธ๋ฆฌ๊ณ  ๊ฐœํ–‰ ๋ฌธ์ž๋ฅผ ๋”ฐ๋กœ "\n" parameterWithName("name").description("This is the description +" + "\n" + "in the table."), // ์•ˆ๋˜๋Š” ๋ฒ„์ „ parameterWithName("name").description("This is the description \n in the table."), ๐Ÿ‘ Reference ๋”๋ณด๊ธฐ https://stackoverflow.com/questions/66405730/when-using-spring-rest-docs-how-do-i-make..
FrontController ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ์„œ๋ธ”๋ฆฟ ํ•˜๋‚˜๊ฐ€ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ  ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์š”์ฒญ์— ๋งž๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์•„์„œ ํ˜ธ์ถœํ•ด์ฃผ๋Š” ํ˜•์‹. ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์„œ๋ธ”๋ฆฟ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ํ•ธ๋“ค๋Ÿฌ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ด๋ฆ„์„ ๋” ๋„“์€ ๋ฒ”์œ„์ธ ํ•ธ๋“ค๋Ÿฌ๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค. ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์–ด๋Œ‘ํ„ฐ public interface MyHandlerAdapter { boolean supports(Object handler); // ์–ด๋Œ‘ํ„ฐ๊ฐ€ ํ•ด๋‹น ์ปจํŠธ๋กค๋Ÿฌ(ํ•ธ๋“ค๋Ÿฌ)๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํŒ๋‹จ ModelView handle(HttpServletRequest request, HttpServletResponse response, Object handler) ..
YURI๐Ÿ•๐Ÿ“๐Ÿถ
'spring' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก