본문 바로가기

Spring23

[인프런베이직] 객체지향설계의 5가지 원칙 중 3개 SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다 클라이언트 객체는 직접 구현 객체를 생성하고, 연결하고, 실행하는 다양한 책임을 가지고 있음 SRP 단일 책임 원칙을 따르면서 관심사를 분리함 구현 객체를 생성하고 연결하는 책임은 AppConfig가 담당 클라이언트 객체는 실행하는 책임만 담당 DIP 의존관계 역전 원칙 프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.” 의존성 주입은 이 원칙을 따르는 방법 중 하나다. 새로운 할인 정책을 개발하고, 적용하려고 하니 클라이언트 코드도 함께 변경해야 했다. 왜냐하면 기존 클라이언 트 코드( `OrderServiceImpl` )는 DIP를 지키며 `DiscountPolicy` 추상화 인터페이스에 의존하는 것 같았 지만, `FixDis.. 2023. 12. 21.
[베이직] 스프링의 핵심 원리 이해 이러한 형태의 서비스를 만들어야 함 순수하게 자바로 개발한 후에 고정할인이 아니라 금액에 따라 가격을 정하려고 함수를 만들었을때 문제가 발생함 - 새로 개발한 정률 할인 정책을 적용하려고 하니 클라이언트 코드인 주문 서비스 구현체도 함께 변경해야함 주문 서비스 클라이언트가 인터페이스인 'DiscountPolicy' 뿐만 아니라, 구체 클래스인 'FixDiscountPolicy' 도 함께 의존 DIP 위반 더보기 AppConfig를 추가함으로 전체적인 컨트롤을 할 수 있도록 함 package hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.me.. 2023. 12. 20.
[스프링 - 스프링 입문] 회원 도메인과 리포지토리 만들기 interface로 멤버 레파지토리 생성 package hello.hellospring.repository; import hello.hellospring.domain.Member; import java.util.List; import java.util.Optional; public interface MemberRepository { Member save(Member member); Optional findById(Long id); Optional findByName(String name); List findAll(); void clearStore(); } 생성할때 option 눌러서 한번에 메서드 생성 package hello.hellospring.repository; import hello.hellos.. 2023. 12. 13.
[인프런-스프링입문] 스프링 웹 개발 기초 1. 정적컨텐츠 - 파일을 그대로 고객한테 웹브라우저를 전달 -> Spring.io 가면 정적컨테츠 2. MVC와 템플릿 엔진 - 서버에서 변형을 하여 HTML을 바꿔 주는 방식 3. API - JSON과 같은 데이터 구조 포맷으로 클라이언트에게 데이터를 전달하는 방식 package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; im.. 2023. 12. 13.
[인프런 - 스프링 입문] 스프링 환경설정 1. strat.sping.io - 인프런은 Spring Web, Thymleafd 2가지 종속성 - 따로 보는 책은 lombok, Spring Web, Spring Configuration Processor 3가지의 종속성 2. 이후 프로젝트에서 open -> hello-spring 압축해제 파일 열기 3. shift 2번 누르면 gradle 창 나오게 할 수 있음 2023. 12. 13.