2024/03/18 42

[섹션 4] 스프링 빈 조회 - 상속관계

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. 부모 타입으로 조회하면, 자식 타입도 함께 조회한다. 그래서 모든 자바 객체의 최고 부모인 Object타입으로 조회하면, 모든 스프링 빈을 조회한다. package com.hello.core.beanfind; import com.hello.core.discount.DiscountPolicy; import com.hello.core.discount.FixDiscountPolicy; import com.hello.core.discount.RateDiscountPolicy; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframe..

Backend/Spring 2024.03.18

[섹션 4] 스프링 컨테이너와 스프링 빈

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. 컨테이너에 등록된 모든 빈 조회 ApplicationContextInfoTest package com.hello.core.beanfind; import com.hello.core.AppConfig; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class ApplicationContex..

Backend/Spring 2024.03.18

[섹션 3] 스프링으로 전환하기

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. 이전까지 사용한 순수 JAVA 코드 (AppConfig) package com.hello.core; import com.hello.core.discount.DiscountPolicy; import com.hello.core.discount.RateDiscountPolicy; import com.hello.core.member.MemberRepository; import com.hello.core.member.MemberService; import com.hello.core.member.MemberServiceImpl; import com.hello.core.member.MemoryMemberRepository; import com.hello.c..

Backend/Spring 2024.03.18

[섹션 3] IoC, DI, 그리고 컨테이너

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. 제어의 역전 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. (구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. AppConfig가 등장한 이후에 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 제어 흐름은 이제 AppConfig가 가져간다. 예를 들어서 OrderServiceImpl은 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지 모른다. 프로그램에 대한 제어 흐름에 대한 권한은 모두 AppConfig가 가지고 있다. 심지어 OrderServiceImpl 도 AppConfig가 생성한다. AppConfig는 OrderServiceImlp이 아닌 Order..

Backend/Spring 2024.03.18

[섹션 3] AppConfig과 생성자 주입

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. 관심사의 분리 디카프리오는 어떤 여자 주인공이 선택되더라도 똑같이 공연할 수 있어야 한다. AppConfig의 등장 애플리케이션의 전체 동작 방식을 구성하기 위해, 구현 객체를 생성하고, 연결하는 책임을 가지는 별도의 설정 클래스 package com.hello.core; import com.hello.core.discount.FixDiscountPolicy; import com.hello.core.member.MemberService; import com.hello.core.member.MemberServiceImpl; import com.hello.core.member.MemoryMemberRepository; import com.hello..

Backend/Spring 2024.03.18

[섹션 3]스프링 핵심 원리 이해2 - 객체 지향 원리 적용

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. 새로운 할인 정책 개발 → 새로운 할인 정책을 확장시킬 수 있도록. **RateDiscountPolicy** “아 고정 1000원 할인하는거보다는 그냥 퍼센트로 할인하는게 낫지 않을까요~” “계획을 따르기 보다 변화에 대응하기를..” 해결방법: DiscountPolicy interface에 FixDiscountPolicy와 RateDiscountPolicy를 종속시키면 된다!! RateDiscountPolicy package com.hello.core.discount; import com.hello.core.member.Grade; import com.hello.core.member.Member; public class RateDiscountP..

Backend/Spring 2024.03.18

[섹션 2]스프링 핵심 원리 이해1 - 예제 만들기

> 본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. # [섹션 2]스프링 핵심 원리 이해1 - 예제 만들기 태그: ✏️ 이론 날짜: 2023년 9월 29일 상위 항목: 스프링 핵심 원리 - 기본편 (https://www.notion.so/746f4c02234143b88f78234d1e1741d9?pvs=21) 상태: Done ## 비지니스 요구 사항과 설계 회원 + 주문 + 할인 정책 할인정책 → 추후에 변경 가능성 높음 (할인 정책은 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 있다…) 객체 지향 설계 방법이 있으니깐 !!! 해결 가능… 인터페이스를 만들고 → 구현체를 언제든지 갈아끼울 수 있도록 설계!! ### 회원 도메인 설계 - 회원 도메인 요구사항 - 회원을 가입하고 조회할 수..

Backend/Spring 2024.03.18

[섹션 1]객체 지향 설계와 스프링

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. EJB 엔터티빈 → 하이버네이트 → JPA 현재 JPA가 Java ORM 시장을 다 잡아먹고 있다! 하이버네이트는 실무 개발자들이 개발하다보니 편하게 하고싶어서 개발한 것인데 오픈소스의 단점(무언가에 특화된..)을 정제해서 JPA를 만들게 된 것이다!! 🌱스프링 프레임워크 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술: 스프링 MVC, 스프링 WebFlux 데이터 접근 기술: 트랜잭션, JDBC, ORM지원, XML 지원 기술 통합: 캐시, 이메일, 원격접근, 스케줄링 테스트: 스프링 기반 테스트 지원 언어: 코틀린, 그루비 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용 스프링 부트 스프링을 편리..

Backend/Spring 2024.03.18

Precommit Test

원래 글: https://velog.io/@stopmin/Precommit-Test 참고 관련 내용은 저번에 이미 정리해뒀다. 참고자료 이전 정리보다 조금 더 알게된 점은, 아래와 같다. 이 그림에서 딱 3단계로 진행되면 된다고 생각한다는 점이다. 수정 내역을 가져오고 내가 수정한 부분을 커밋하는 것이다. 이걸 upstream에서 바로 해도 되지만 origin을 통해서 하는게 나중에 문제가 생겼을 때 해결하기 좋다는 점이다. precommit test 홀리 몰리 뭐야 원래 안됐었는데 됐다!! 저기 근데 unstaged된거 있다고 하긴 하는데 잘못 건들면 안될 것 같아서 말았다. dev branch에 pull했다. 생각해보니깐 git add . 을 안했다. 그래서 다시 커밋했다. pull request d..

Backend/FastAPI 2024.03.18

AID backend project 추가 정리

원래 글: https://velog.io/@stopmin/AID-backend-project 이번 프로젝트를 진행하면서 배웠던 점을 총합해서 정리한 게시물입니다. 이때까지 정리한 글 개발환경 설정 + 패키지 정리 fork한 repo를 origin에 push Lock 파일 & pre-commit FastAPI Pytest & Github action & Docker CloneCoding (CRUD, ToDO-list) DockerCompose & MongoDB Precommit Test CRUD vs AID_Web project SQLAlchemy 1. 개발환경 설정 + 패키지 정리 Pyenv: 다양한 버전의 파이썬을 관리하는데 사용되었다. Pipenv: 가상환경을 사용하기 위해 사용되었다. 이때 pipf..

Backend/FastAPI 2024.03.18