BackEnd/Spring & Springboot Study
스프링 핵심 원리 - 기본편 [싱글톤 컨테이너]
웹 어플리케이션과 싱글톤 스프링은 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. 웹 어플리케이션은 보통 여러 고객이 동시에 요청을 한다. Singleton이 적용되지 않은 컨테이너는 요청마다 새로운 인스턴스를 생성한다. 예를 들어 고객 트래픽이 초당 100이라고 가정한다면 100개의 객체가 생성되고 소멸한다. (메모리 낭비가 심하다.) 해결 방안은 해당 객체가 딱 1개만 생성되고, 공유하도록 설계하면 된다. -> 싱글톤 패턴 스프링 없는 순수한 DI 컨테이너 테스트 코드 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 디자인 패턴 객체 인스턴스를 2개 이상 생성하지 못하게 못하도록 막아야 한다. private 생성자를 사용해 외부에서 임의로 new 키워드를 사용하지 못하게 막는다. packag..
스프링 핵심 원리 - 기본편 [스프링 컨테이너와 스프링 빈]
스프링 컨테이너 생성 // 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext를 스프링 컨테이너라 한다. XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 참고: 더 정확히는 스프링 컨테이너를 부를 때 BeanFactory , ApplicationContext 로 구분해서 이야기한다. BeanFactory 를 직접 사용하는 경우는 거의 없으므로 일반적으로 ApplicationContext 를 스프링 컨테이너라 한다. 스프링 컨테이너 생성 과정 new AnnotationConfigApplicat..
스프링 핵심 원리 - 기본편 [스피링 핵심 원리 이해2 - 객체 지향 원리 적용]
새로운 할인 정책 개발 고정된 금액을 할인하는 정액 할인 정책에서 주문한 금액의 %를 할인해주는 새로운 정률 할인 정책을 추가하자. 참고: 애자일 소프트웨어 개발 선언 github Log https://github.com/devjun63/springcore/commit/469face379a5c385b54369ccebc7c4ab1493ac4b 새로운 할인 정책 적용과 문제점 ... public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new Rate..
스프링 핵심 원리 - 기본편 [스피링 핵심 원리 이해1 - 예제 만들기]
프로젝트 생성 사전 준비물 JAVA 11 설치 IDE : IntelliJ or Eclipse 프로젝트 선택 Gradle Spring Boot 2.7.11 Java 11 Jar 비즈니스 요구사항과 설계 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (추후 변경 가능) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하..
스프링 핵심 원리 - 기본편 [객체 지향 설계와 스프링]
스프링이란 스프링은 자바 언어 기반의 프레임워크 자바 언어의 가장 큰 특징 - 객체 지향 언어 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 다형성을 활용하기 위한 프레임워크 좋은 객체 지향 프로그래밍이란? 객체 지향 특징 추상화 캡슐화 상속 다형성 다형성의 본질 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다. 다형성의 본질을 이해하려면 협력이라는 객체사이의 관계에서 시작해야함 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다. 좋은 객체 지향 설계의 5가지 원칙(SOLID) 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP: 단일 책임 원칙(single responsibility princip..
RestTemplate은 스프링에서 제거되나요?
공공데이터 포털에서 동물병원위치 데이터를 mysql에 저장하고 EPSG:2097 형식으로 저장된 데이터를 카카오 맵 API의 좌표 변환을 통해 다른 테이블에 저장하려한다. RestTemplate를 사용해보려 하는데 이에 관한 영상을 토비님이 업로드 하셔서 정리해보고자 한다. "RestTemplate이 deprecate 될거라는 얘기가 계속 있다보니 없어질 기술을 계속 사용할 수 없어서 다른 방안을 찾았습니다. 스프링 문서에서 권장하는 WebClient에 관심이 생겼습니다. 그런데 이걸 쓰려니 WebFlux 모듈을 추가해야 하더라고요. 저는 WebFlux 의존성 추가에 대한 거부감을 극복하지 못하고 결국 RestTemplate도, WebClient도 아닌 대안을 찾아야 했는데..." - Discord 토비..