@ResponseBody
@RequestMapping("/usr/main/home")
@ResponseBody
public String showMain() {
return "ㅎㅇ";
}
브라우저요청시 매개변수
@RequestMapping("/usr/home/getCount")
@ResponseBody
public int getCount() {
return count;
}
@RequestMapping("/usr/home/doSetCount")
@ResponseBody
public String doSetCount(int count) {
this.count = count;
return "Count의 값이"+ count +"로 초기화 됬습니다.";
}
http://localhost:8081/usr/home/doSetCount?count=10
객체의 브라우저 출력
@RequestMapping("usr/home/getMap")
@ResponseBody
public Map<String, Object> getMap() {
Map<String, Object> map = new HashMap<>();
map.put("철수나이", 22);
map.put("영희나이", 33);
return map;
}
@RequestMapping("usr/home/getList")
@ResponseBody
public List<String> getList() {
List<String> list = new ArrayList<>();
list.add("철수나이");
list.add("영희나이");
return list;
}
["철수나이","영희나이"]
{"철수나이":22,"영희나이":33}
private변수 브라우저 출력
@RequestMapping("usr/home/getArticle")
@ResponseBody
public Article getArticle() {
Article article = new Article();
return article;
}
}
class Article {
private int id;
private String title;
}
실제로 컴파일된 결과물 .class 파일
에는 코드가 생성
되어 있다1. 접근자/설정자 자동 생성
1)@Getter와 @Setter 특정 필드에 어노테이션을 붙여주면, 자동으로 생성된 접근자(Getter)와 설정자(Setter) 메소드 생성자 자동 생성
2)@NoArgsConstructor 어노테이션은 파라미터가 없는 기본 생성자를 생성
3) @AllArgsConstructor 어노테이션은 모든 필드 값을 파라미터로 받는 생성자를 생성
4)@RequiredArgsConstructor 어노테이션은 final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 생성
4)@NonNull 어노테이션을 변수에 붙이면 자동으로 null 체크를 해준다. 즉, 해당 변수가 null로 넘어온 경우, NullPointerException 예외를 일으켜 줍니다.
2. toString() 메소드 자동 생성
@ToString 어노테이션만 클래스에 붙여주면 자동으로 생성
3. equals, hashCode 자동 생성
1) @EqualsAndHashCode 어노테이션을 사용하면 자동으로 equals, hashCode 메소드를 생성할 수 있습니다.
2) @EqualsAndHashCode(callSuper = true)
public class User extends Domain {
private String username;
private String password;
}
callSuper 속성을 통해 equals와 hashCode 메소드 자동 생성 시 부모 클래스의 필드까지 감안할지 안 할지에 대해서 설정할 수 있다.
즉, callSuper = true로 설정하면 부모 클래스 필드 값들도 동일한지 체크하며, callSuper = false로 설정(기본값)하면 자신 클래스의 필드 값들만 고려
3. @Data
@Data는 위에서 설명드린 @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode을 한꺼번에 설정
해주는 매우 유용한 어노테이션
@Data
public class User {
// ...
}
이름 | 설명 |
---|---|
@Controller | 해당 클래스가 Controller임을 나타내기 위한 어노테이션 |
@RequestMapping | 요청에 대해 어떤 Controller, 어떤 메소드가 처리할지를 맵핑하기 위한 어노테이션 |
@RequestParam | Controller 메소드의 파라미터와 웹요청 파라미터와 맵핑하기 위한 어노테이션 |
@ModelAttribute | Controller 메소드의 파라미터나 리턴값을 Model 객체와 바인딩하기 위한 어노테이션 |
@SessionAttributes | Model 객체를 세션에 저장하고 사용하기 위한 어노테이션 |
@RequestPart | Multipart 요청의 경우, 웹요청 파라미터와 맵핑가능한 어노테이션(egov 3.0, Spring 3.1.x부터 추가) |
@CommandMap | Controller메소드의 파라미터를 Map형태로 받을 때 웹요청 파라미터와 맵핑하기 위한 어노테이션(egov 3.0부터 추가) |
@ControllerAdvice | Controller를 보조하는 어노테이션으로 Controller에서 쓰이는 공통기능들을 모듈화하여 전역으로 쓰기 위한 어노테이션(egov 3.0, Spring 3.2.X부터 추가) |
@RequestMapping
@ResponseBody
클라이언트에서 서버로 필요한 데이터를 요청하기 위해 JSON 데이터를 요청 본문에 담아서 서버로 보내면, 서버에서는 @RequestBody 어노테이션을 사용하여 HTTP 요청 본문에 담긴 값들을 자바객체로 변환시켜, 객체에 저장한다.
서버에서 클라이언트로 응답 데이터를 전송하기 위해 @ResponseBody 어노테이션을 사용하여 자바 객체를 HTTP 응답 본문의 객체로 변환하여 클라이언트로 전송한다.