본문 바로가기

Back-end55

[Spring] 싱글톤 컨테이너 스프링 핵심원리 강의를 들으면서 복습겸 기록을 합니다. 웹 애플리케이션과 싱글톤 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 스프링이 없는 순수한 DI컨테이너 테스트 package hello.core.singleton; import hello.core.AppConfig; import hello.core.member.MemberService; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") voi.. 2021. 10. 5.
[Spring] 스프링 컨테이너와 스프링 빈 스프링 핵심원리 강의를 들으면서 복습겸 기록을 합니다. 스프링 컨테이너 생성 스프링 컨테이너가 생성되는 과정 0. 설명 //스프링 컨테이너 생성 ApplicationContext applicationContect = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 를 스프링 컨테이너라 한다. ApplicationContext는 인터페이스다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 직전의 AppConfig를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다. 자바 설정 클래스를 기반으로 스프링 컨테이너 (Applicati.. 2021. 10. 4.
[Spring] 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 스프링 핵심원리 강의를 들으면서 복습겸 기록을 합니다. 새로운 할인 정책 개발 정액할인 정책이 아닌 주문한 금액의 %를 할인해주는 정률 할인 정책을 추가하자! RateDiscountPolicy 코드 추가 package hello.core.discount; import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent = 10; //10%할인 @Override public int discount(Member member, int price){ if(member.getGrade() == Grade.VI.. 2021. 9. 23.
[Spring] 스프링 핵심 원리 이해1 - 예제 만들기 스프링 핵심원리 강의를 들으면서 복습겸 기록을 합니다. 프로젝트 생성 https://start.spring.io 설정 이미지 비지니스 요구사항과 설계 회원 회원은 가입하고 조회할 수 있다. 회원은 일반과 VIP 두가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다.(미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 변경 가능성이 높은 상황(미확정) 회원 도메인 설계 회원 도메인 요구사항 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확) 회원 도메인 협력 관계 회원 클래스 다이어그램.. 2021. 9. 22.
[Spring] 객체 지향 설계와 스프링 스프링 핵심원리 강의를 들으면서 복습겸 기록을 합니다. 자바 이야기 스프링 EJB 컨테이너 대체 단순함의 승리 현재 사실상 표준 기술 하이버 네이트 EJB 엔티티빈 기술을 대체 JPA(Java Persistence API) 새로운 표준 정의 EJB 엔티티빈 -> 하이버네이트 -> JPA 스프링의 역사 2002년 로드 존슨 책 출간 EJB의 문제점 지적 BeanFactory, ApplicationContext, POJO, 제어의 역전, 의존관계 주입 과 같은 스프링의 핵심 개념과 기반 코드가 들어있음 스프링이란? 스프링 프레임워크 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술 : 트랜잭션, JDBC, ORM지원, XML지원 기술 통.. 2021. 9. 22.
[Spring] AOP 스프링 입문 강의를 들으면서 복습겸 기록을 합니다. AOP가 필요한 상황 모든 메소드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? MemberService 회원 조회 시간 측정 추가 public class MemberService { /** * 회원가입 */ public Long join(Member member) { long start = System.currentTimeMillis(); try { validateDuplicateMember(member); //중복 회원 검증 memberRepository.save(member); return member.ge.. 2021. 9. 21.