본문 바로가기

Spring/Spring Framework(Basic)6

[Spring] Spring 을 이용하여 Service 구축하기 - 3 컴포넌트 스캔 컴포넌트 스캔이란 @Component 어노테이션이 붙은 클래스를 스캔해서 @Bean 으로 등록해주는 것을 뜻한다. 이전의 AppConfig 에서는 @Configuration 으로 설정 클래스로 만들고 각 생성자마다 @Bean 어노테이션을 추가해서 직접 스프링 컨테이너에 넣었었다. 하지만 이는 서비스의 규모가 커지면 @Bean 을 수 없이 많이 적어줘야 하고 , 이는 여러모로 귀찮은 작업이 된다. 이를 위해서 @Component 스캔을 사용한다. 1 2 3 4 @Configuration @ComponentScan public class AutoAppConfig { } cs 새로운 설정 클래스 AutoAppConfig 를 생성하고 @Configuration 과 @Component 스캔을 적용한.. 2021. 10. 29.
[Spring] Spring 을 이용하여 Service 구축하기 - 2 싱글톤 패턴 디자인 패턴에는 여러가지가 있으나 앞으로의 서비스 개발에는 싱글톤 패턴을 이용할 것이다. 싱글톤 패턴을 이용하는 이유에는 효율성 문제이다. 싱글톤 패턴을 사용하지 않고 다른 패턴을 사용한다면 서비스가 요청될 때마다 객체를 생성하고 소멸하는 과정이 반복해서 발생하게 된다. 적은 수의 사용자라면 큰 문제가 없겠지만 서비스의 규모가 커지게 된다면 트래픽이 어마어마하게 많아질 것이고 메모리 낭비로 이어지게 된다. -> 이를 해결하기 위해 싱글톤 패턴을 도입하여 하나의 객체만을 생성하고 공유되도록 설계하면 된다. -> 주의할 점은 여러 클라이언트가 하나의 객체를 공유하기 때문에 전역 변수나 public으로 열어두는 등의 행동을 한다면 A라는 사람이 구매한 정보가 B에게도 보인다거나 하는 큰 장애가 발.. 2021. 10. 28.
[Spring] Spring 을 이용하여 Service 구축하기 - 1 스프링 기반으로 변경하기 기존의 DI컨테이너(AppConfig)는 순수한 자바코드로 의존성을 주입했었다. 이제부터는 스프링을 이용하여 의존성을 주입하겠다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 package hello.core; import hello.core.Repository.MemberRepository; import hello.core.Repository.MemoryMemberRepository; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPo.. 2021. 10. 28.
[Spring] 순수 자바 코드를 이용해 Service 구축하기 - 3 정리 지금까지 순수 자바코드를 이용하여 간단한 회원 가입과 할인 , 그리고 주문을 하는 서비스를 만들어보았다. 처음에는 각 '클라이언트 객체'(ServiceImpl) 에서 직접 구현객체를 생성하는 문제가 있었다. 이는 OCP , DIP 위반이므로 이를 해결하기 위해 AppConfig 를 만들어 모든 설정정보(구현객체)를 만들고 생성자를 통해 주입하였다. 이제 클라이언트 객체는 자신의 역할을 수행하는 것에만 집중 할 수 있고 , 설정 정보는 AppConfig 에서 주입해줄 수 있다. 이렇듯 구현과 역할을 분리하는 것은 자바의 '다형성' 을 만족시키는 과정이다. SOLID 5원칙 좋은 객체지향 설계의 5원칙 : SOLID 1. SRP : 단일책임원칙(Single Responsibility Principle).. 2021. 10. 28.
[Spring] 순수 자바 코드를 이용해 Service 구축하기 - 2 복습 저번 포스트에서는 회원 객체를 생성하고 , 로컬 Repository에 저장하기 위한 메소드와 이를 처리하기 위한 MemberService 를 정의하였다.이번 포스트에서는 저장과 할인 정책을 개발해본다. 요구사항 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다... 2021. 10. 27.
[Spring] 순수 자바 코드를 이용해 Service 구축하기 - 1 스프링의 첫 걸음 단순히 스프링 기술을 사용하는 것만이 아닌 , 왜 사용하는지 , 어떠한 이점이 있어서 스프링 프레임워크(Spring Framework)를 사용하는지 알기 위해서는 직접 순수한 자바를 사용해 간단한 시스템을 구축해보고 이를 점진적으로 스프링으로 바꾸어 나가는 과정을 시작한다. 요구사항 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) 할인 정책은 변경 가능성이 높.. 2021. 10. 26.