Spring

Spring/객체지향

Java와 객체 지향 : OOP 4대 특성

자바와 객체 지향 객체 지향은 인간 지향이다. 절차적/구조적 프로그래밍까지의 과정은 기계 종속적인 개발이었다. 구조적 프로그래밍에서 제일 중요한 것은 함수이다. 복잡한 문제를 작은 문제로 분할하여 정복하는 방법이다. 그러나 몇 천, 몇 만 라인의 명령어를 논리적인 단위로 나누어 블록화하여 작성해야한다. 그 후 객체 지향 프로그래밍이 등장했다. 객체 지향의 출발은 "우리가 주변에서 사물을 인식하는 방식대로 프로그래밍할 수 있지 않겠는가?"라는 물음에서 시작되었다. 0,1로 대변하는 기계(컴퓨터)에 맞춰 사고하던 방식을 버리고 현실세계를 인지하는 방식으로 프로그램을 만들자는 것이다. 그래서 객체 지향은 직관적이다. 객체 지향 이해하기 세상에 존재하는 모든 것은 사물, 즉 객체(Object)이다. 각각의 사물..

Spring/객체지향

프로그래밍의 발전 및 Java와 절차적/구조적 프로그래밍

프로그래밍의 발전 기계어 : 초창기 기술, 0과 1 어셈블리어 : 어셈블러(인간의 언어)로 기계어 생성 - 그러나 기계(cpu)마다 서로 다른 어셈블리어 C : 하나의 소스 파일만 만들면 된다. - 기계별 컴파일러 필요 Java : 하나의 소스 파일, 하나의 컴파일러 - 각 기종 별로 JRE만 설치해주면 된다. Java : Write Once Use Anywhere ! CBD(Componenet Based Development) 컴포넌트 기반 개발 애플리케이션을 의미 있는 단위로 구분하고 그 단위를 하나하나씩 부품으로 개발하여 완성하는 방법 SOA(Service Oriented Architecture) 서비스 지향 구조 개발자 입장에서의 개발이 아니라 실제 현식의 업무를 기준으로 개발 그저 용어일 뿐, ..

Spring/카테캠 - TIL

TIL [0802] : 6주차 과제 수행 (통합테스트, API 문서 작성, 배포)

6주차 카카오 테크 캠퍼스 2단계 - BE - 6주차 클론 과제 과제명 1. 카카오 클라우드 배포 과제 설명 1. 통합테스트를 구현하시오. 2. API문서를 구현하시오. (swagger, restdoc, word로 직접 작성, 공책에 적어서 제출 등 모든 방법이 다 가능합니다) 3. 프론트앤드에 입장을 생각해본뒤 어떤 문서를 가장 원할지 생각해본뒤 API문서를 작성하시오. 4. 카카오 클라우드에 배포하시오. 과제 상세 : 수강생들이 과제를 진행할 때, 유념해야할 것 아래 항목은 반드시 포함하여 과제 수행해주세요! 통합테스트가 구현되었는가? API문서가 구현되었는가? 배포가 정상적으로 되었는가? 프로그램이 정상 작동되고 있는가? API 문서에 실패 예시가 작성되었는가? 코드리뷰 관련: PR시, 아래 내용을..

Spring/카테캠 - TIL

응답값 검증

null 검증 resultActions.andExpect(jsonPath("$.success").value("true")); //resultActions.andExpect(jsonPath("$.response").value("null")); //에러 resultActions.andExpect(jsonPath("$.response").doesNotExist()); //null인지 확인 null인지 검증하기 위해서는 value로 검증하지 않고 doesNotExist()로 검증한다. [ ] 빈 리스트 검증 resultActions2.andExpect(jsonPath("$.response.products.length()").value(0)); //빈 리스트 검증 resultActions2.andExpect(js..

Spring/카테캠 - TIL

TIL [0731, 0801] : 6주차 강의 (WebMvcConfig, 통합테스트, API Docs, 배포)

외부 경로에 사진 폴더 연결하기 WebMvcConfig 만들기 @Configuration //컴포넌트 스캔 public class WebMvcConfig implements WebMvcConfigurer { @Value("${file.path}") //application.yml에서 경로 가져오기 (./images/) private String filePath; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { WebMvcConfigurer.super.addResourceHandlers(registry); //Resource Handler 등록 // 1. 윈도우 절대경로 file:///c:/images/ // 2. ..

Spring/카테캠 - TIL

TIL [0728] 카카오테크캠퍼스 5주차 과제 (기능 구현 + 예외 처리)

5주차 카카오 테크 캠퍼스 2단계 - BE - 5주차 클론 과제 과제명 코드 리팩토링 과제 설명 카카오 쇼핑 프로젝트 전체 코드를 리팩토링한다 - AOP로 유효성검사 적용하기 - GlobalExceptionHanlder 구현하기 - 장바구니 담기 -> 예외 처리하기 - 장바구니 수정(주문하기) -> 예외처리하기 - 결재하기 기능 구현 (장바구니가 꼭 초기화 되어야함) - 주문결과 확인 기능 구현 과제 상세 : 수강생들이 과제를 진행할 때, 유념해야할 것 아래 항목은 반드시 포함하여 과제 수행해주세요! AOP가 적용되었는가? GlobalExceptionHandler가 적용되었는가? 장바구니 담기시 모든 예외가 처리 완료되었는가? 장바구니 수정시 모든 예외가 처리 완료되었는가? 결재하기와 주문결과 확인 코드..

Spring/카테캠 - TIL

카카오테크캠퍼스 4주차 코드리뷰

PR 안녕하세요 멘토님! :) 작성한 코드에 대해 부족한 점, 잘못된 점, 잘한 점 등 아낌없이 조언해주시면 감사드리겠습니다! 😊 코드 작성하면서 어려웠던 점 BDDMockito 사용시 given 패턴에서 인자 설정 오류으로 인해 Stubbing이 되지 않는 문제가 발생하였고, any()와 anyInt()를 이용해 해결했습니다. Controller 테스트에서 Spring Security의 userDetails 값을 불러오지 못해 문제가 발생하였고, @WithMockUser로는 해결이 되지 않았습니다. 직접 Authentication 객체를 생성하여 주입하고, SecurityContextHolder의 Context에 설정하여 해결했습니다. Bean Validation에서 @NotEmpty, @NotBlan..

Spring/카테캠 - TIL

TIL [0727] : 기능 구현, AOP 개념 정리

과제 수행 내용 (필수) : 강의를 들으며 모르는 개념 정리 5주차 과제를 수행하였습니다. (기능 구현) 내일 join fetch를 수행하는 것과 repository에서 조회하는 것의 쿼리를 비교해볼 생각입니다. AOP 개념에 대해 확실히 공부하고 어느정도 감을 잡은 것 같아 좋았습니다. 영속성 컨텍스트를 고려하여 DTO로 응답을 생성하였습니다. 더티체킹이 수행되는 시점이 @Transactional메서드 종료 후이므로 그 전에 DB 조회시 영속성 컨텍스트의 내용과 달라져 위험이 발생할 수 있습니다. 이때에는 명시적으로 DB에 반영하는 flush()를 사용함을 알 수 있었습니다. 또한 부모 트랜잭션과 자식 트랜잭션의 관계에 대해 생각해보았습니다. 금일 과제 수행 (코드 작성) 하면서 어려웠던 점 (선택) ..

mint*
'Spring' 카테고리의 글 목록 (2 Page)