Java/Spring 22

스프링 컨테이너

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/lecture/55353?tab=curriculum 스프링 핵심 원리 - 기본편 - 인프런 | 학습 페이지 지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요.... www.inflearn.com 스프링 컨테이너 구조 직접 구성해보기 스프링은 AppConfig의 구성 정보를 이용해 스프링 컨테이너를 구성한다. @Bean 어노테이션이 달려 있는 객체들을 등록하고 이후 각각 객체의 의존 관계를 설정해준다. 그림으로 나타내면 아래와 같다. bean이 잘 ..

Java/Spring 2021.09.07

의존성관계 주입

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/lecture/55344?tab=curriculum 스프링 핵심 원리 - 기본편 - 인프런 | 학습 페이지 지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요.... www.inflearn.com 위 예시는 오더 서비스 구현 객체 안에서 MemoryMemberRepository와 RateDiscountPolicy 둘을 직접 생성해 사용하고 있기 때문에 DIP, OCP 위반이다. 이를 해결하기 위해선 외부에서 MemoryMemberRepository와..

Java/Spring 2021.09.06

OCP, DIP 위반

DIP 위반 (클라이언트 클래스는 인터페이스에만 의존해야함, 역할과 구현을 철저히 분리) OrderServiceImpl가 인터페이스인 MemberRepository와 DiscountPolicy에만 의존되있는 거처럼 보이지만 실제론 구현체인 MemoryMemberRepository, RateDiscountPolicy에도 의존하고 있음 * new를 통해 넣어주고 있기 때문 OCP 위반 (확장을 자유롭게 할 수 있어야하지만 변경시 클라이언트 클래스의 로직에 영향이 가면 X) 할인 정책을 바꿀 때 OrderServiceImpl 내에서 코드 변경이 이루어짐 FixDiscountPolicy -> RateDiscountPolicy

Java/Spring 2021.09.03

단일 책임 원칙 예시

VIP는 무조건 1000원을 할인 해주는 정액 할인 정책 FixDiscountPolicy 객체가 DiscountPolicy 인터페이스에 끼워져있다. 여기서 OrderServiceImpl 입장에선 할인에 대해 전혀 몰라도 됨 할인 정책에 대해선 DiscountPolicy가 알아서 자율적으로 동작 만약 DiscountPolicy가 없다면 할인 정책에 대한 변경이 들어왔을 때 OrderServiceImpl의 로직을 변경해야함 OrderServiceImpl는 주문을 생성하는 하나의 책임, DiscountPolicy는 할인 가격을 알려주는 하나의 책임만 있기 때문에 단일 책임 원칙을 잘 지킨 코드이다.

Java/Spring 2021.08.31

좋은 객체 지향 프로그래밍이란?

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 개발자가 되어보세요! 📣 확인해주 www.inflearn.com 다형성 역할과 구현 역할과 구현으로 세상을 구분 - 운전자 (운전을 하는 역할) - 자동차 (운전자를 일정 구역에 이동시키는 역할) - 여기서 그랜저를 테슬라로 바꿔도 자동차 역할만 한다면 아무 문제 없음..

Java/Spring 2021.08.28

객체가 주입 & 객체 지향의 장점

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/lecture/49594?tab=curriculum 객체가 주입되는 과정 DataSource를 스프링 컨테이너에 등록해 JdbcMemberRepository에서 사용하는 모습 MemberRepository 인터페이스를 등록하는 @bean에 리턴 값을 JdbcMemberRepository을 넣어줬다. * 쉽게 말해 MemberRepository 인터페이스에 객체 JdbcMemberRepository를 꽂아 사용 객체 지향의 장점 인터페이스를 구현하는 memory, jdbc 구현체 둘이 ..

Java/Spring 2021.08.25

자바 코드로 스프링 bean 직접 등록

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/lecture/49587?tab=curriculum 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 학습 페이지 지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요.... www.inflearn.com bean 직접 등록 자바 설정 클래스에 직접 bean을 등록해 관리할 수 있다. 컨트롤러는 스프링이 직접 관리하기 때문에 어노테이션과 오토와이얼드를 설정해준다. * DI 주입 참고 블로그 https://mangky..

Java/Spring 2021.08.23

컴포넌트 스캔과 자동 의존관계 설정

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/lecture/49586?tab=curriculum 컴포넌트 스캔 DemoApplication을 통해 스프링이 실행이 되면 하위에 있는 컴포넌트들을 모두 스캔해 스프링 컨테이너 (IOC Container)에 등록한다. * 스프링은 컨테이너에 bean을 등록할 때 싱글톤으로 등록한다. (유일한 하나를 등록해 공유) MVC 패턴에서 사용하는 대표적인 컴포넌트는 @Controller, @Service, @Repository인데 각각 @Component이 설정되어 있기 때문에 스프링이 스캔할..

Java/Spring 2021.08.22

assertThrows

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/lecture/49584?tab=curriculum&speed=1.5 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 학습 페이지 지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요.... www.inflearn.com assertThrows assertThrows는 첫번 째에 들어오는 예외의 클래스를 받아와 두번 째 값의 예외가 같은지 체크하는 기능이다. 위 예시를 보면 member1이 등록된 상태에서 동일한 ..

Java/Spring 2021.08.22

Optional - 미완료

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/lecture/49583?tab=curriculum 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 학습 페이지 지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요.... www.inflearn.com 공부해야할 것 Optional, 특히 isPresent

Java/Spring 2021.08.22