분류 전체보기
-
웹 시스템 구성, 서블릿, 멀티 쓰레드Spring 2022. 4. 13. 17:32
💡 웹 시스템 구성 - WEB, WAS, DB 🔎 WEB (Web Server) - 정적 리소스 제공 - 정적(파일) HTML, CSS, JS, 이미지, 영상 🔎 WAS (Web Application Server) - 웹 서버 기능 + 프로그램 코드 실행해서 애프리케이션 로직 수행 - 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC * 정적 리소스는 웹 서버가 처리 -> 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청 * WAS는 중요한 애플리케이션 로직 처리 담당 * 정적 리소스가 많이 사용되면 Web 서버 증설 애플리케이션 리소스가 많이 사용되면 WAS 증설 => 효율적인 리소스 관리 * WAS,DB 장애시 WEB 서버가 오류 화면 제공 💡 서블릿 @WebSer..
-
빈 스코프Spring 2022. 4. 13. 15:38
💡 빈 스코프 * 스프링 빈은 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때 까지 유지된다 -> 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다 - 스코프 : 스프링 빈이 존재할 수 있는 범위를 말한다 1. 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다 2. 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다 3. 웹 관련 스코프 - request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프 - session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프 - application : 웹의 서블릿 컨텍스트와 같은 범위로 유..
-
빈 생명주기 콜백Spring 2022. 4. 12. 18:04
* 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다 -> 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 알아보자 💡 빈 생명주기 콜백 🔎 스프링 빈의 라이프사이클 : 객체 생성 -> 의존관계 주입 => 데이터 사용할 준비 완료 * 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능을 제공 + 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다 🔎 스프링 빈의 이벤트 라이프 사이클 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 - 초기화 콜..
-
의존관계 자동 주입 @AutowiredSpring 2022. 4. 12. 17:07
🔎 다양한 의존관계 주입 방법 - 생성자 주입 - 수정자 주입 (setter 주입) - 필드 주입 - 일반 메서드 주입 💡 생성자 주입 - 생성자를 통해서 의존 관계를 주입 받는 방법 - 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다 - 불변, 필수 의존관계에 사용 - 생성자에 @Autowired 애노테이션 붙이기 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository membe..
-
컴포넌트 스캔Spring 2022. 4. 12. 16:14
🔎 컨포넌트 스캔과 의존관계 자동 주입 시작하기 - 스프링 빈 등록할 때 자바 코드의 @Bean이나 XML의 등을 통해, 설정 정보에 직접 등록할 스프링 빈을 나열했다. - 등록할 스프링 빈이 수십개, 수천 개가 될 수 있으므로 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. - 의존관계도 자동으로 주입하는 @Autowired 기능도 제공한다 💡 컴포넌트 스캔 - 설정 정보 없이도 자동으로 스프링 빈을 등록 -> @ComponentScan 사용 - @Component 애노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록한다 - excludeFilters로 스캔 제외할 대상을 지정할 수 있다 ☞ @Configuration도 컴포넌트 스캔 대상이다 : @Co..
-
싱글톤 컨테이너Spring 2022. 4. 12. 12:59
💡 싱글톤 패턴 - 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다 -> 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야한다 => private 생성자를 사용해 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다 public class SingletonService { // 1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); // 2. public으로 열어서 객체 인스턴스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용한다 public static SingletonService getInstance() { return ins..
-
스프링 컨테이너와 스프링 빈Spring 2022. 4. 12. 10:49
💡 스프링 컨테이너 생성 : ApplicationContext 는 스프링 컨테이너라 하며, 인터페이스다 : 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다 AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); * 자바 설정 클래스를 기반으로 스프링 컨테이너 ApplicationContext 만들기 -> new AnnotationConfigApplicationContext(AppConfig.class); -> 이 클래스는 ApplicationContext 인터페이스의 구현체이다. * 스프링 컨테이너를 생성..
-
Spring 핵심Spring 2022. 4. 11. 18:18
📌 역할과 구현을 분리해서 설계해야한다 -> 자유롭게 구현 객체를 조립할 수 있게 설계해야한다 📌 "추상화에 의존해야지, 구체화에 의존하면 안된다" : 구체 클래스까지 함께 의존한다면, 구체 클래스 변경시 클라이언트 코드도 함께 변경해야 한다 => DIP 위반 => 클라이언트 코드는 인터페이스에만 의존하도록 설계해야한다 ex) 할인방식 2종류 : 고정할인, 정률할인 * 새로운 할인정책을 만든 후 FixDiscountPolicy -> RateDiscountPolicy로 변경하는 순간 OrderServiceImpl도 함께 변경해야한다 => OCP 위반 public class OrderServiceImpl implements OrderService { //private final DiscountPolicy d..