
AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)
코드에서 핵심적인 로직과 부가 기능을 분리하여 모듈화 하는 것
이렇게 공통적으로 필요한 부가기능들을 사용 ex) 에러 핸들링, 로깅, 성능 측정 등
OOP(Object Oriented Programming, 객체 지향 프로그래밍) 을 더욱 발전시키기 위한 개념
a. Member 도메인에 대한 CRUD 개발
조건1. DB가 아닌 List 사용
조건2. Grade enum 대신 String을 사용
Member -> Long id, String name, String grade

MemberController 코드는 다음과 같다
@RestController
@RequestMapping("/api")
public class MemberController {
private final MemberService memberService;
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
@PostMapping("/join")
public ResponseEntity<String> join(@RequestBody Member member) {
memberService.join(member);
System.out.println("member.getId() = " + member.getId());
return ResponseEntity.ok("가입 완료");
}
@GetMapping("/info/{id}")
public ResponseEntity<Member> memberInfo(@PathVariable Long id) {
Member member1 = memberService.findMember(id);
System.out.println("member1 = " + member1);
return ResponseEntity.ok(member1);
}
@PutMapping("/update/{id}")
public ResponseEntity<String> update(@PathVariable Long id, @RequestBody Member member) {
memberService.updateMember(id, member);
return ResponseEntity.ok("수정 완료");
}
@DeleteMapping("/withdraw/{id}")
public ResponseEntity<String> withdraw(@PathVariable Long id) {
memberService.deleteMember(id);
return ResponseEntity.ok("탈퇴 완료");
}
}
b. Postman으로 동작 확인
위 컨트롤러에 매핑된 주소로 api 테스트
회원 가입 @PostMapping("/join")

회원 정보 조회 @GetMapping("/info/{id}")

회원 정보 수정 @PutMapping("/update/{id}")

수정 후 조회

회원 정보 삭제 @DeleteMapping("/withdraw/{id}")

c. bootJar로 빌드하고 수동 실행하여 정상적인 서비스 동작 확인

이하 위와 동일하게 Postman으로 테스트 진행 후 정상 동작 확인



이하 위와 동일하게 Postman으로 테스트 진행 후 정상 동작 확인