본문 바로가기

스프링6

(Spring) JSP 에서 스프링 MVC 패턴 구축하기 -2 MVC 패턴의 출현 너무 많은 역할 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무 많은 역할을 하게되고, 결과적으로 유지보수가 어려워진다. 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고, UI를 변경할 일이 있어도 비즈니스 로직이 함께 있는 해당 파일을 수정해야 한다. HTML 코드 하나 수정해야 하는데, 수백줄의 자바 코드가 함께 있다고 상상해보라! 또는 비즈니스 로직을 하나 수정해야 하는데 수백 수천줄의 HTML 코드가 함께 있다고 상상해보라 변경의 라이프 사이클 사실 이게 정말 중요한데, 진짜 문제는 둘 사이에 변경의 라이프 사이클이 다르다는 점이다. 예를 들어서 UI 를 일부 수정하는 일과 비즈니스 로직을 수정하는 일은 각각 다르.. 2021. 11. 1.
[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 구축하기 - 1 스프링의 첫 걸음 단순히 스프링 기술을 사용하는 것만이 아닌 , 왜 사용하는지 , 어떠한 이점이 있어서 스프링 프레임워크(Spring Framework)를 사용하는지 알기 위해서는 직접 순수한 자바를 사용해 간단한 시스템을 구축해보고 이를 점진적으로 스프링으로 바꾸어 나가는 과정을 시작한다. 요구사항 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) 할인 정책은 변경 가능성이 높.. 2021. 10. 26.