• μλ νμΈμ~ μ΄μ μ μ΄μνλ λΈλ‘κ·Έμ μμ€μ½λλ₯Ό κ΄λ¦¬νλ GitHubκ° λ°λ‘ μμ΅λλ€.
β @ModelAttribute, @RequestParam
μλ νμΈμ~ μ΄λ²μ μ 리ν λ΄μ©μ μ€νλ§μ
@ModelAttribute, @RequestParam μ΄λ Έν μ΄μ μ λλ€.
μ΅κ·Ό @ModelAttribute μ΄λ Έν μ΄μ μ μ¬μ©νλλ°, λ°μΈλ©μ΄ λμ§ μμ λ¬Έμ κ° μμκ³ ...
κ²μν΄λ³΄λ @ModelAttribute μ΄λ Έν μ΄μ μ κ°μ²΄μ λ°μΈλ© νκΈ° μν΄μ Setter λ©μλ νΉμ μμ±μ κ° νμμ μΌλ‘ νμνκΈ°μ λ°μΈλ©μ΄ λμ§ μλ λ¬Έμ κ° λ°μνμμ΅λλ€.
λ°λΌμ @ModelAttribute μ λΉμ·ν μ΄λ Έν μ΄μ μΈ @RequestParam μ΄λ Έν μ΄μ μ κ°λ¨ν μ 리ν΄λ³΄λλ‘ νκ² μ΅λλ€.
β @ModelAttribute
@ModelAttributeλ ν΄λΌμ΄μΈνΈκ° μ μ‘νλ μ¬λ¬ νλΌλ―Έν°λ₯Ό 1:1λ‘ κ°μ²΄μ λ°μΈλ© ν ν λ€μ Viewλ‘ λ°μ΄ν°λ₯Ό λ겨μ μΆλ ₯νκΈ° μν΄ μ¬μ©λλ μ΄λ Έν μ΄μ μ λλ€.
@ModelAttributeλ λμ΄μ¨ νλΌλ―Έν°μ νμ μ΄ κ°μ²΄μ νμ κ³Ό μΌμΉνλμ§λ₯Ό ν¬ν¨ν΄μ λ€μν μ ν¨μ±(Validation) κ²μ¬λ₯Ό μΆκ°μ μΌλ‘ μ§νν©λλ€.
μλ₯Ό λ€μ΄, int νμ id κ°μ "1" μ΄λΌλ Stringμ λ¬Έμμ΄μ λ£μΌλ €κ³ νλ€λ©΄ BindException μλ¬κ° λ°μν©λλ€.
@PostMapping(path = "user/join", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ApiOperation(value = "νμκ°μ
")
public ApiResult<JoinResult> join(
@ModelAttribute JoinRequest joinRequest,
@RequestPart(required = false) MultipartFile file) {
// ...
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class JoinRequest {
@ApiModelProperty(value = "μ΄λ¦", required = true)
private String name;
@ApiModelProperty(value = "λ‘κ·ΈμΈ μ΄λ©μΌ", required = true)
private String principal;
@ApiModelProperty(value = "λ‘κ·ΈμΈ λΉλ°λ²νΈ", required = true)
private String credentials;
protected JoinRequest() {}
// Getter, Setter μλ΅
// Setter λ©μλ νΉμ λͺ¨λ νλλ₯Ό λ°λ μμ±μλ λ°λμ μ‘΄μ¬ν΄μΌ @ModelAttribute λ°μΈλ© κ°λ₯
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
.append("name", name)
.append("principal", principal)
.append("credentials", credentials)
.toString();
}
}
μ μ½λμμ ν΄λΌμ΄μΈνΈκ° λ€μκ³Ό κ°μ νλΌλ―Έν°λ₯Ό μ μ‘νλ©΄, JoinRequest κ°μ²΄μ λ°μΈλ©μ΄ λ©λλ€.
• https://localhost~?name=test&principal=id&credentials=password
β» @ModelAttribute λ Setter λ©μλ νΉμ λͺ¨λ νλλ₯Ό μΈμλ‘ λ°λ μμ±μκ° μμ΄μΌ λ°μΈλ©μ΄ λ©λλ€.
β @RequestParam
@RequestParam μ΄λ Έν μ΄μ μ ν΄λΌμ΄μΈνΈκ° μ μ‘νλ νλΌλ―Έν°λ₯Ό 1:1λ‘ λ°κΈ° μν΄ μ¬μ©ν©λλ€.
@RequestParam μ΄λ Έν μ΄μ μ μλ΅
β» μ¬μ€ @RequestParam μ΄λ Έν μ΄μ μ μλ΅μ΄ κ°λ₯ν©λλ€. μλ΅μ νλλΌλ 컨νΈλ‘€λ¬μ 맀κ°λ³μ μ΄λ¦κ³Ό Formμμμ λ€μ΄λ°μ΄ λμΌνλ€λ©΄ ν΄λΌμ΄μΈνΈκ° μμ²ν νλΌλ―Έν°μ key κ°κ³Ό 맀κ°λ³μμ μ΄λ¦μ λΉκ΅νμ¬ μ μ ν λ°μΈλ©μ ν΄μ£Όμ§λ§ μ¬μ©μκ° μνλ 맀κ°λ³μμ μ§μ 맀νμ ν μ μμΌλ―λ‘ μ¬μ©ν©λλ€.
@ModelAttribute μ΄λ Έν μ΄μ μ κ°μ²΄μ λ°μΈλ©νλ€λ μ μμ λ€λ¦ λλ€.
@RequestParam μ΄λ Έν μ΄μ μ μ¬μ©νλ©΄ λ°λμ ν΄λΉ νλΌλ―Έν°κ° μ μ‘μ΄ λμ΄μΌ νλλ°μ, λ§μ½ ν΄λΉ νλΌλ―Έν°κ° νμνμ§ μλλ€λ©΄ required μμ±μ falseλ‘ μ€μ ν μ μμ΅λλ€. (defaultλ true μ λλ€.)
λν μλμ κ°μ΄ μμ±μΌλ‘ nameμ μ€μ ν μ μλλ°μ, μ€μ νλ©΄ ν΄λΉ μ€μ κ°κ³Ό νλΌλ―Έν°μ keyκ° λμΌν΄μΌ ν©λλ€.
@Requestparam("test") String test ==> localhost:8080/hello/dto?test=1234
μλ μμ±μμ value = "test" μ value = "testAmount" λ₯Ό μ°Έκ³ ν΄μ£ΌμΈμ.
• @Request("test"), @Request("testAmount") ν μ€νΈ
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
@GetMapping("/hello/dto")
public HelloResponseDto helloDto(@RequestParam(value = "test") String name,
@RequestParam(value = "testAmount") int amount) {
return new HelloResponseDto(name, amount);
}
}
• @Request("name"), @Request("amount") ν μ€νΈ
RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
@GetMapping("/hello/dto")
public HelloResponseDto helloDto(@RequestParam("name") String name,
@RequestParam("amount") int amount) {
return new HelloResponseDto(name, amount);
}
}
• μμ² νλΌλ―Έν°κ° λΆμ‘±ν λ
• required = false μμ± ν μ€νΈ
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
@GetMapping("/hello/dto")
public HelloResponseDto helloDto(@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "amount") int amount) {
return new HelloResponseDto(name, amount);
}
}
• primitive νμ μ require = false μμ± λΆκ°λ₯!
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
@GetMapping("/hello/dto")
public HelloResponseDto helloDto(@RequestParam("name") String name,
@RequestParam(value = "amount", required = false) int amount) {
return new HelloResponseDto(name, amount);
}
}
Reference Typeμ΄ μλ primitive typeμ μμ κ°μ΄ required = false μμ±μ΄ λΆκ°λ₯ν©λλ€!!
• Reference Type
• ex) String
• primitive type
• ex) int
'Spring' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Spring Boot Maven profile μ΄μ & κ°λ° DB λΆλ¦¬(AWS EC2) (6) | 2021.06.18 |
---|---|
JUnit - @ParameterizedTest, @ValueSource, @CsvSource, @MethodSource μ΄λ Έν μ΄μ (4) | 2021.06.08 |
[Spring] κ°μ²΄λ³΅μ¬ BeanUtils.copyProperties() & μλ μ리 (0) | 2021.02.20 |
[Spring] Maven λ©ν°λͺ¨λ νλ‘μ νΈ (0) | 2021.02.09 |
[Spring] HandlerMethodArgumentResolver (0) | 2021.01.30 |
λκΈ