[스프링 핵심 원리 - 기본편] 싱글톤 컨테이너
·
Back-End/Spring
[작성일: 2023. 08. 06] 웹 애플리케이션과 싱글톤public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); // 1. 조회 : 호출을 할 때마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); MemberService memberService2 = appConfig.memberService(); // 참조값이 다른 것을 확인 System.out.println("m..
[스프링 핵심 원리 - 기본편] 스프링 컨테이너와 스프링 빈
·
Back-End/Spring
[작성일: 2023. 08. 04]  스프링 컨테이너 설정ApplicationContext applicationContext // 인터페이스의 구현체= new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext는 인터페이스고 스프링 컨테이너라고 불린다.스프링 컨테이너는 XML 기반이나 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.     스프링 컨테이너의 생성 과정위의 코드로 스프링 컨테이너를 생성하며 AppConfig.class로 구성 정보를 지정한다.  스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다.빈 이름은 메서드 이름을 사용하며 @Bean(name="memberServic..
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해(3)
·
Back-End/Spring
[작성일: 2023. 08. 02] 제어의 역전 loC(Inversion of Control)기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다.반면에 AppConfig를 생성하고 난 후에 구현 객체는 자신의 로직을 실행하는 역할만 담당하게 되어 AppConfig가 프로그램의 제어 흐름을 가져가게 된다. 예를 들어 OrderServiceImpl은 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지 알 수 없다는 것이다. 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(loC)라고 한다.   프레임워크 vs 라이브러리프레임워크가 내가 작성한 코드를 제어하고 대신 실행하면 프레임워크(Junit)내가 작성한 코드가..
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해(2)
·
Back-End/Spring
[작성일: 2023. 08. 01] 새로운 할인 정책 개발이번에는 주문한 금액의 %를 할인해 주는 새로운 정률 할인 정책을 추가하자.RateDiscountPolicy 추가public class RateDiscountPolicy implements DiscountPolicy { private int discountPercent = 10; @Override public int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { return price * discountPercent / 100; } else { return 0; } ..
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해(1)
·
Back-End/Spring
[작성일: 2023. 06. 02]  비즈니스 요구사항과 설계(순수 자바 개발)회원 도메인 요구사항회원을 가입하고 조회할 수 있다.회원은 일반과 VIP 두 가지 등급이 있다.회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다.(미확정)  주문과 할인 정책회원은 상품을 주문할 수 있다.회원 등급에 따라 할인 정책을 적용할 수 있다.할인 정책은 모든 VIP는 1000원을 할인해 주는 고정 금액 할인을 적용해야 한다.(나중에 변경가능성 있음.)할인 정책은 변경 가능성이 높다.(미확정)     회원 도메인 설계회원 도메인 협력 관계회원 저장소라는 인터페이스 생성(메모리 회원 저장소/DB회원 저장소/외부 시스템 연동 회원 저장소 중 선정)  회원 클래스 다이어그램  회원 객체 다이어그램회원..
[스프링 핵심 원리 - 기본편] 객체지향 설계와 스프링
·
Back-End/Spring
[작성일: 2023. 05. 30] 스프링이란?스프링 프레임워크핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타웹 기술 : 스프링 MVC, 스프링 WebFlux데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원기술 통합 : 캐시, 이메일, 원격 접근, 스케줄링테스트 : 스프링 기반 테스트 지원언어 : 코틀린, 그루비최근에는 스프링 부트를 통해 스프링 프레임워크의 기술들을 편리하게 사용하고 있음.   스프링 부트스프링을 편리하게 사용할 수 있도록 지원하며 최근에는 기본으로 사용하고 있다.단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성한다. Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 된다.쉬운 빌드 구성을 위한 starter 종속성을 제공한다..