분류 전체보기 (63) 썸네일형 리스트형 2024.06.13 (목) 주문 CRUD 어제에 이어서 오늘은 주문에 대한 CRUD 작성을 하였다너무 CRUD만 하는 거 아니냐?라고 의문이 들 수 있지만기본을 탄탄하게 다져놔야 다음 단계를 넘어갈 때 쉽게 넘어갈 수 있다고 생각한다먼저 Controller이다@RestController@RequestMapping("/products/{productId}/orders")class OrderController( private val orderService: OrderService,) { @GetMapping fun getOrderList(): ResponseEntity> { return ResponseEntity.ok(orderService.getOrderList()) } @GetMapping("/{order.. 2024.06.12 (수) 다시 CRUD 시작 이번 프로젝트에서 내가 담당한 부분이 쇼핑몰의 상품, 주문의 CRUD 작성이었다일단 상품에 맞는 CRUD 작성을 먼저 하였다 @RestController@RequestMapping("/products")class ProductController( private val productService: ProductService) { @GetMapping fun getProductList( ): ResponseEntity> { return ResponseEntity.ok(productService.getProductList()) } @GetMapping("/{productId}") fun getProduct( @PathVariable productI.. 2024.06.11 (화) 프로젝트 시작 다시 프로젝트를 시작했다이번에 만들건 간단한 쇼핑몰이다필수적으로 구현해야 할 것들을 먼저 선정하고나중에 선택적으로 구현할 수 있는 것들을 선별했다그리고 와이어 프레임을 만들고ERD, API 명세서 작성도 끝마쳤다 이렇게 기획하는 데 9시간이 걸린 것 같다건물을 지을 때도 지하를 탄탄하게 짓는 것처럼기획 단계에서 탄탄하게 잘 구성해 놓아야개발을 시작할 때 막힘없이 잘 만들 수 있는 것 같다 오늘은 이것 말고는 딱히 한 게 없다내일부터 개발 시작이다이번 주는 내가 한 것들을 꼼꼼하게 정리해 놓을 것이다 2024.06.10 (월) Spring Security Filter 주요 필터들SecurityContextHolderFilterSecurityContext 객체를 생성, 저장, 조회하는 역할을 한다CsrfFilterCSRF 공격을 막는 필터이다 CSRF공격은 유저가 특정 이미지, url등을 클릭할때 링크 또는 스크립트를 사용하여 서버측으로 의도치않은 HTTP요청을 전송하게 하여 정보를 빼내거나 조작하는 공격이다 일반적으로 쿠키와 세션 기반으로 인증을 진행할때, 많이 일어날 수 있는 공격이다 우리의 경우 Rest API를 통해 stateless하게 서버를 유지하고, JWT를 사용하기 때문에, 꺼 놓아도 괜찮은 필터이다LogoutFilter설정된 로그아웃 URL(default: /logout)로 요청이 들어오면, 세션을 무효화하고, 쿠키를 삭제하고, SecurityConte.. 2024.06.05 (수) Spring Security Spring Security의 아키텍쳐Spring에서는 기본적으로 위와 같은 Filter Chain을 통해 Controller의 앞 단에서 다양한 역할들을 수행한다 Command를 수행하기 앞 단에서 필요한 부분들을 수행한다이미지 변환 혹은 데이터 압축, 암호화, 인증, 로깅, 캐싱 등 도메인 로직 외에 부가적으로 필요한 기능들을 수행한다우리가 넣고 싶은 기능을 추가하려면 어떻게 할까? Spring은 이를 위해 DelegatingFilterProxy를 제공한다. DelegatingFilterProxy는 Application Context와의 Bridge 역할을 하여, 우리가 작성한 Bean들을 Filter, 정확히 말하면 ServletFilter에서 사용할 수 있게 해준다DelegatingFilterPr.. 2024.06.04 (화) AOP AOP(Aspect-Oriented Programming)핵심 로직과 부가기능을 분리하고, 부가기능을 모듈화하여 애플리케이션 전체에 걸쳐 재사용할 수 있도록 하는 프로그래밍 패러다임AOP의 핵심은 Cross-Cutting이다OOP가 비즈니스 로직을 모듈화하여 객체별로 역할을 정의하는 것이라면, AOP는 객체 혹은 Method 별로 필요한 부가적인 기능들을 모듈화하여 OOP와 함께 적용할 수 있다아래 그림처럼 옆에서 객체들을 바라보고, 부가기능들을 파악하여 잘 모듈화하는 게 핵심이다이런 부가 기능들을 횡단 관심사라고도 부른다 AOP의 주요 개념Aspect횡단 관심사(부가기능)를 모듈화한 단위 Aspect는 부가기능을 정의하는 Advice와 적용 위치를 결정하는 PointCut으로 구성PointCutAspe.. 2024.06.03 (월) 팀 프로젝트 회고 오늘은 팀 프로젝트를 하면서 부족했던 점, 문제였던 점, 앞으로 어떻게 해야 할지를 생각해 보는 시간을 가져볼 것이다 내가 부족했던 점은 다른 팀원에 비해 실력이 턱없이 부족했던 것이었다이런 건 어쩔 수 없다고 생각하긴 하지만 조금 업혀가는 느낌이었다하지만 내가 할 수 있는 부분에서는 최선을 다했다고 생각한다이렇게 한 발짝씩 앞으로 나아 가면 된다고 생각한다 문제였던 점은 아무래도 많이 모르다 보니 다른 팀원들이 짜 놓은 코드들이 이해가 안 갔다는 부분이다그래서 프로젝트 초반에는 내가 할 수 있던 부분이 조금 있었다그런데 후반으로 갈수록 내가 할 수 있는 부분이 많이 줄어들었다DB 관리, 오타 발견, 팀원들이 짜놓은 코드 그냥 들여다보기그래도 할 수 있었던 건 의견은 낼 수 있었다는 것이다팀원들은 괜찮다.. 2024.05.29 (수) 과제 CRUD 만들기: 신고기능 어제에 이어 과제를 진행했다오늘 만들건 게시물에 신고 기능을 넣는 것이다그냥 뭐 어렵지 않게 만들겠지 생각했다하지만 생각과보다 까다로웠다일단 controller를 보자@PostMapping fun createReport( @PathVariable postId: Long, @RequestBody request: CreateReportRequest ): ResponseEntity { reportService.createReport(postId, request) return ResponseEntity.ok(Unit) }}사실 신고를 취소하는 게 아니라면 create만 들어가면 된다조회는 딱히 필요하지 않을 수 있다고 생각하고 만약 조회를 한다면.. 이전 1 2 3 4 5 ··· 8 다음