SRP: 단일 책임 원칙
OCP: 개방-폐쇄 원칙
public class MemberService {
private MemberRepository memberRepository = new MemoryMemberRepository();
}
public class MemberService {
//private MemberRepository memberRepository = new MemoryMemberRepository();
private MemberRepository memberRepository = new JdbcMemberRepository();
}
// 다형성을 사용했지만 OCP 원칙을 지킬 수 없음
// 객체를 생성하고, 연관관계를 맺어주는 별도의 생성자가 필요!
LSP: 리스코프 치환 원칙
ISP: 인터페이스 분리 원칙
DIP: 의존관계 역전 원칙
- 추상화에 의존해야 하고, 구체화에 의존하면 안됨
- 구현 클래스에 의존하지 말고, 인터페이스에 의존
```java
public class MemberService {
private MemberRepository memberRepository = new MemoryMemberRepository();
}
// DIP 위반
```
🤔 다형성 만으로는 OCP, DIP를 지킬 수 없음
🤨 다형성 만으로는 구현 객체를 변경할 때 클라이언트 코드도 함께 변경
😏 다형성 만으로는 쉽게 부품을 갈아 끼우듯이 개발할 수 없음
server.port = 8888
@RestController
@RequestMapping("/api") // http://localhost:8888/api 를 호출하면 실행
@RequestMapping(method = RequestMethod.GET, path = "/getmethod")
public String getMethod(){
return "getMethod() 호출!";
}
// http://localhost:8888/api/getparameter1?userid=apple&userpw=1234
@RequestMapping(method=RequestMethod.GET, path = "getparameter1")
public String getParameter1(@RequestParam String userid, @RequestParam String userpw){
System.out.println("userid: " + userid);
System.out.println("userpw: " + userpw);
return "getParameter1() 호출!";
}
@RequestMapping GET방식에 대한 축약형
@GetMapping("/getparameter2")
==
@RequestMapping(method=RequestMethod.GET, path = "getparameter2")
// http://localhost:8888/api/getmultiparameter2?userid=apple&userpw=1234&name=김사과&gender=여자&email=apple@apple.com&age=20
@GetMapping("/getmultiparameter2")
public Member getMultiParameter2(Member member){ //json으로 리턴
System.out.println(member);
return member;
}
// http://localhost:8888/api/postmethod
@RequestMapping(method= RequestMethod.POST, path = "/postmethod")
public String postMethod(){
return "postMethod() 호출!";
}
post 방식이라 링크에 파라미터값을 넣어 접속하는 방법은 안되고 Postman을 이용하여 확인 가능
// http://localhost:8888/api/postparameter
@RequestMapping(method= RequestMethod.POST, path = "/postparameter")
public String postParameter(@RequestParam String userid, @RequestParam String userpw){
System.out.println("userid: " + userid);
System.out.println("userpw: " + userpw);
return "postParameter() 호출!";
}
// http://localhost:8888/api/postmultiparameter
@PostMapping("postmultiparameter")
public Member postMultiParameter(@RequestBody Member member){ // 객체로 보낼 때는 파라미터값을 하나하나 입력하면 안됨, json으로 보내야함
System.out.println(member);
return member;
}
보통 엑셀로 작성하며 테이블 및 컬럼명과 데이터 타입 등을 작성해놓은 문서
개체-관계 모델, 테이블 간의 관계를 설명해주는 다이어그램
DB의 구조를 한 눈에 파악할 수 있음