ÃֽŠ°Ô½Ã±Û(JAVA)
2018.07.30 / 10:26

½ºÇÁ¸µ ÄÁÆ®·Ñ·¯¿Í ÆĶó¹ÌÅÍ : 2. ÆĶó¹ÌÅÍ ¹ë¸®µ¥À̼Ç

summerman
Ãßõ ¼ö 222
½ºÇÁ¸µ ÄÁÆ®·Ñ·¯¿Í ÆĶó¹ÌÅÍ ½Ã¸®Áî
1. ÄÁÆ®·Ñ·¯¿¡¼­ ÆĶó¹ÌÅ͸¦ ¹Þ´Â ¹æ¹ý
- https://gs.saro.me/#!m=elec&jn=878
2. ÆĶó¹ÌÅÍ ¹ë¸®µ¥À̼Ç
- https://gs.saro.me/#!m=elec&jn=879



¼­·Ð
ÀÌÀü Àå¿¡¼­´Â ÄÁÆ®·Ñ·¯¿¡¼­ ÆĶó¹ÌÅ͸¦ ¹Þ´Â ¹æ¹ý¿¡ ´ëÇؼ­ °­ÀÇÇÏ¿´½À´Ï´Ù.
À̹ø Àå¿¡¼­´Â ¹ÞÀº ÆĶó¹ÌÅÍ¿¡ ´ëÇÑ ¹ë¸®µ¥À̼ǿ¡ ´ëÇؼ­ °­ÀÇ Çغ¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.

ÀÚ¹Ù ½ºÆå¿¡´Â ¾Æ·¡¿Í °°Àº ±âº» ¹ë¸®µ¥ÀÌ¼Ç ¼ÂÀÌ Á¸ÀçÇÕ´Ï´Ù.
http://docs.oracle.com/javaee/7/api/javax/validation/constraints/package-summary.html
À§ ¹ë¸®µ¥ÀÌ¼Ç Áß ¸î°¡Áö¸¸ Á¤¸®ÇÏ¸é ¾Æ·¡¿Í °°½À´Ï´Ù.
- ¼³¸íÀÌ °£´ÜÇÏ´Ï Á÷Á¢ ¸µÅ©¸¦ º¸½Ã´Â °Íµµ ÁÁ½À´Ï´Ù.
AssertFalse : °ÅÁþÀÎ °æ¿ì¸¸ Åë°ú
AssertTrue : ÂüÀÎ °æ¿ì¸¸ Åë°ú
Future : ¹Ì·¡³¯Â¥ÀÎ °æ¿ì¸¸ Åë°ú
Past : °ú°Å³¯Â¥ÀÎ °æ¿ì¸¸ Åë°ú
Pattern : ÇØ´ç ÆÐÅÏ ³»¿¡¼­¸¸ Åë°ú
Null : null ÀÎ °æ¿ì¸¸ Åë°ú
NotNull : null ÀÌ ¾Æ´Ñ °æ¿ì¿¡¸¸ Åë°ú
NotNull.List : ¸®½ºÆ® Àüü°¡ null ÀÌ ¾Æ´Ñ °æ¿ì¿¡¸¸ Åë°ú
Size : ½ºÆ®¸µÀÇ »çÀÌÁî Á¶°ÇÀÌ ÀÏÄ¡ÇÒ ¶§ Åë°ú.
Min : ¼ýÀÚ ÇüÅÂÀÇ ÃÖ¼Ò min ÀÌ»ó [ÅؽºÆ®¿¡¼­µµ ¼ýÀڷΠġȯÇÏ¿© ¿¬»ê]
Max : ¼ýÀÚ ÇüÅÂÀÇ ÃÖ¼Ò max ÀÌ»ó [ÅؽºÆ®¿¡¼­µµ ¼ýÀڷΠġȯÇÏ¿© ¿¬»ê]



@RequestParam¸¦ ÅëÇÑ ¹ë¸®µ¥À̼Ç
  1. @RestController
  2. class TempController
  3. {
  4. @GetMapping("/temp")
  5. String temp(@RequestParam(value="p1") @NotNull String p1)
  6. {
  7. return "Åë°ú";
  8. }
  9. }
°á°ú : /temp
- ¿À·ù : p1 ÀÌ null ÀÓ
°á°ú : /temp?p1=abcde
Åë°ú
  1. @GetMapping("/temp")
  2. String temp(@RequestParam(value="p1") @Valid @Pattern(regexp="[a-z]{3}") String p1)
  3. {
  4. return "Åë°ú";
  5. }
°á°ú : /temp?p1=aa
Åë°ú
- ¿À·ù ³ª¾ßÇÏÁö ¾Ê³ª?? @Valid¸¦ Áà¾ßÇϳª?
  1. @GetMapping("/temp")
  2. String temp(@RequestParam(value="p1") @Valid @NotNull @Pattern(regexp="[a-z]{3}") String p1)
  3. {
  4. return "Åë°ú";
  5. }
°á°ú : /temp?p1=aa
Åë°ú
- ±×·¸½À´Ï´Ù. RequestParam ¿¡¼­´Â @NotNull ´Â »ç¿ëÇÒ ¼ö ÀÖÀ¸³ª @Pattern À» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
- ½ÉÁö¾î @NotNull º¸´Ü ¾Æ·¡ ¹æ¹ýÀÌ ´õ ³ªÀ» °Ì´Ï´Ù.
  1. String temp(@RequestParam(value="p1", required=true) String p1)
±×·³ ¸ðµ¨À» °¡Áö°í Çغ¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.



¸ðµ¨ Ŭ·¡½º¸¦ ÅëÇÑ ¹ë¸®µ¥À̼Ç
  1. @RestController
  2. class TempController
  3. {
  4. @GetMapping("/temp")
  5. String temp(@Valid Abc abc)
  6. {
  7. return "Åë°ú : " + p1;
  8. }
  9.  
  10. @Data
  11. @ToString @Getter @Setter
  12. static public class Abc {
  13. @NotNull
  14. @Pattern(regexp = "[a-z]{3}")
  15. String p1 = "default";
  16. }
  17. }
°á°ú : /temp
- ¿À·ù : p1 ÀÌ null ÀÓ
°á°ú : /temp?p1=Daa
- ¿À·ù : p1 ÀÌ ¿µ¹®¼Ò¹®ÀÚ3ÀÚ("[a-z]{3}") °¡ ¾Æ´Ï´Ù.
°á°ú : /temp?p1=try
Åë°ú : try

±×·¸´Ù¸é ÆĶó¹ÌÅ͸¦ üũÇÏ´Â °ÍÀΰ¡?
¶ÇÇÑ ´ÙÁß Á¶°ÇµéÀÌ µÉ °ÍÀΰ¡?
  1. @RestController
  2. class TempController
  3. {
  4. @GetMapping("/temp")
  5. String temp(@Valid Abc abc)
  6. {
  7. return "Åë°ú : " + abc.getP1();
  8. }
  9.  
  10. @Data @ToString @Getter @Setter
  11. static public class Abc {
  12. @NotNull @Size(min=1, max=10)
  13. String p1 = "default";
  14.  
  15. @Min(1) @Max(100)
  16. int p2 = 1;
  17. }
  18. }
°á°ú : /temp
Åë°ú : TempController.Abc(p1=default, p2=1)
ÆĶó¹ÌÅ͸¦ üũÇÏ´Â °ÍÀÌ ¾Æ´Ñ ¸ðµ¨À» üũÇÏ´Â °Í ÀÔ´Ï´Ù.!!!
Áï, ¾Æ¹«·± ÀÎÀÚ¸¦ ³ÖÁö ¾Ê¾ÒÁö¸¸ ¸ðµ¨ÀÌ Á¶°Ç¿¡ ¸ÂÀ¸´Ï Åë°úÇÕ´Ï´Ù.
°á°ú : /temp?p1=AbcdeAbcdea
- ¿À·ù : p1ÀÇ ±æÀÌ°¡ 10ÀÚ¸¦ ³Ñ¾î°©´Ï´Ù.
°á°ú : /temp?p1=AbcdeAbc&p2=32
Åë°ú : TempController.Abc(p1=AbcdeAbc, p2=32)
  1. @Data @ToString @Getter @Setter
  2. static public class Abc {
  3. @NotNull @Min(1) @Max(100)
  4. String p1;
  5.  
  6. @Min(1) @Max(100)
  7. int p2 = 1;
  8. }
°á°ú : /temp
- ¿À·ù : p1 ÀÌ null ÀÔ´Ï´Ù.
°á°ú : /temp?p1=a
- ¿À·ù : @Min(1) @Max(100) Á¶°ÇÀ¸·Î p1Àº ¼ýÀÚ ÇüÅ¿©¾ßÇÕ´Ï´Ù.
°á°ú : /temp?p1=33
Åë°ú : TempController.Abc(p1=33, p2=1)
- ½ºÆ®¸µÀ¸·Î ¹Þ¾Æ¾ßÇÏÁö¸¸ ¼ýÀÚ·Î °ËÁõÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù.



PathVariable
- ¾Õ Àå¿¡¼­µµ ¼³¸í?çÁö¸? PathVariable Àº »õ·Î¿î ÇüÅ¿¡ ´Ù¸¥ Ç÷ο츦 Ÿ´Â °ÍÀÌ ¾Æ´Ñ Ç¥Çö¹æ½ÄÀÌ ´Ù¸¥°Í ÀÔ´Ï´Ù.
- Áï, »ç¿ë¹ýÀº °°½À´Ï´Ù.
  1. @RestController
  2. class TempController
  3. {
  4. @GetMapping("/temp/{p1}")
  5. String temp(@Valid Abc abc)
  6. {
  7. return "Åë°ú : " + abc.toString();
  8. }
  9.  
  10. @Data @ToString @Getter @Setter
  11. static public class Abc {
  12. @NotNull @Min(1) @Max(1000)
  13. String p1;
  14. }
  15. }
°á°ú : /temp/a
- ¿À·ù : @Min(1) @Max(1000) Á¶°ÇÀ¸·Î ¿ÀÁ÷ ¼ýÀÚ ÇüÅ·Π³Ñ°Ü¾ßÇÕ´Ï´Ù.
°á°ú : /temp/23231
- ¿À·ù : ¹üÀ§¸¦ ÃÊ°úÇÕ´Ï´Ù.
°á°ú : /temp/23
Åë°ú : TempController.Abc(p1=23)


±âŸ : ³¯Â¥
- ³¯Â¥ °°Àº°æ¿ì´Â ÀÔ·Â Æ÷¸äÀ» ¼³Á¤ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù.
  1. @RestController
  2. class TempController
  3. {
  4. @GetMapping("/temp")
  5. String temp(@Valid Abc abc)
  6. {
  7. return "Åë°ú : " + abc.toString();
  8. }
  9.  
  10. @Data @ToString @Getter @Setter
  11. static public class Abc {
  12. @NotNull
  13. @Future
  14. @DateTimeFormat(pattern = "yyyyMMdd")
  15. Date date;
  16. }
  17. }
°á°ú [ÀÛ¼ºÀϷκÎÅÍ °ú°Å³¯Â¥] : /temp?date=20001122
- ¿À·ù
°á°ú [ÀÛ¼ºÀϷκÎÅÍ ¹Ì·¡³¯Â¥] : /temp?date=20171122
Åë°ú : TempController.Abc(date=Wed Nov 22 00:00:00 KST 2017)



Ãß½Å
- nullÀÌ ÀÖ´Â Á¶°ÍµéÀº @NotNull À» ÁÖÁö ¾ÊÀ¸¸é Á¶°Ç¿¡ ¸ÂÁö ¾Ê´õ¶óµµ Åë°úµË´Ï´Ù.!!