https://www.inflearn.com/course/스프링-입문-스프링부트/dashboard
GetMapping(”hello”)
와 매칭 됨.model
에 data
와 spring!!
을 받아서return “hello”;
를 함.
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
hello
라는 객체를 return
하면 json형태로 치환된다. 예시는 아래의 코드.
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ResponseBody
사용 원리
일반적인 웹 애플리케이션 계층 구조
public interface MemberRepository {
Member save(Member member);
Optional<Member> findById(Long id);
Optional<Member> findByName(String name);
List<Member> findAll();
}
Optional을 쓰는이유: 인수가 null일 경우 처리
💡 왜 MemoryMemberRepository는 MemberRepository에 있는 모든 걸 override할꺼면 굳이 MemberRepository.interface를 만들어야 하는 것인가? → 개구리책에서 SRP; 단일 책임 원칙과 ISP; 인터페이스 분리 원칙을 참고해보자.@AfterEach
public void afterEach(){
repository.clearStore();
}
만약 다른 메소드가 있다면 해당 메소드가 끝나고 @AfterEach
에 있는 코드를 실행함. 메소드 마다 의존관계가 없어야하기 때문이다.