본문 바로가기

Spring/스프링 핵심 원리 - 기본편17

9-2. 빈 스코프 : 웹 스코프 HTTP 요청마다 빈을 생성할 수는 없나요? 안녕하세요. 오늘은 빈 스코프 중에서 웹 스코프에 대해 알아보겠습니다. 빈 스코프는 빈이 존재할 수 있는 범위로, 싱글톤, 프로토타입, 웹 스코프 3개로 나눌 수 있습니다. 싱글톤 스코프는 기본 스코프로, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프입니다. 프로토타입은 클라이언트의 요청이 들어오면 생성되고, 스프링 컨테이너는 빈의 생성, 의존 관계 주입, 초기화까지만 관여하고 더는 관리하지 않는 스코프입니다. 프로토타입 스코프는 아래 게시글에서 알아보았으니 궁금하신 분은 참고해주세요! https://passionate.tistory.com/26 9-1. 빈 스코프: 프로토타입 스코프 스프링 빈은 싱글톤으로만 관리되나요? 안녕하세요. 스프.. 2022. 1. 13.
9-1. 빈 스코프: 프로토타입 스코프 스프링 빈은 싱글톤으로만 관리되나요? 안녕하세요. 스프링 빈의 스코프가 무엇인지 알아보고, 그중 프로토타입 스코프에 대해서 자세히 살펴보겠습니다. 빈 스코프 https://passionate.tistory.com/13에서 싱글톤 컨테이너를 학습하였습니다. 5-1. 싱글톤 컨테이너 + static method @Configuration은 왜 사용하는 것일까요? 안녕하세요. 오늘은 싱글톤 컨테이너에 대해서 알아보겠습니다. 싱글톤 컨테이너를 학습하고, @Configuration 사용 이유를 이해하는 것이 오늘의 목표입니다. passionate.tistory.com 스프링 빈은 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때까지 유지됨을 알아보았습니다. 이것은 스프링 빈이 기본적으로 싱글톤.. 2022. 1. 12.
8-2. 빈 생명주기 콜백을 지원하는 3가지 방법 Q. 빈 생명주기 콜백은 어떻게 사용하나요? A. @PostConstruct, @PreDestroy 어노테이션을 붙이면 됩니다. 안녕하세요. 아래 게시글에서 빈 생명주기 콜백이 무엇인지와 왜 필요한지를 알아보았습니다. https://passionate.tistory.com/24?category=1250204 8-1. 빈 생명주기 콜백 빈 생명주기 콜백은 무엇이고, 왜 필요한가요? 안녕하세요. 오늘은 빈 생명주기 콜백에 대해서 알아보겠습니다. 오늘의 주제인 '빈 생명주기 콜백'이 무엇인지 먼저 알아봅시다. 스프링 빈의 '생 passionate.tistory.com 오늘은 스프링에서 빈 생명주기 콜백을 지원하는 3가지 방법을 알아보겠습니다. - 인터페이스(Intializing Bean, Disposable .. 2022. 1. 11.
8-1. 빈 생명주기 콜백 빈 생명주기 콜백은 무엇이고, 왜 필요한가요? 안녕하세요. 오늘은 빈 생명주기 콜백에 대해서 알아보겠습니다. 오늘의 주제인 '빈 생명주기 콜백'이 무엇인지 먼저 알아봅시다. 스프링 빈의 '생명주기'는 스프링 빈이 만들어지고, 소멸되는 과정을 의미하는 것이겠죠. 콜백 그런데 '콜백(call back)'은 뭘까요? call back보다, call after라고 생각하면 이해하기 쉽습니다[2]. 어떤 이벤트가 발생하면, 그다음으로 콜백 함수가 호출됩니다. 저희가 일반적으로 함수를 사용할 때는, 코드에서 호출해서 부릅니다. 그런데 어떤 함수는 어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에서 호출합니다[3]. 이것이 콜백함수입니다. 콜백 함수의 중요한 특징 중 하나는, 다른 함수에 매개변수로 넘겨진다.. 2022. 1. 10.
7-2. 의존 관계 주입 조회 빈이 2개 이상일 때 Q. @Autowired를 하였는데, 조회되는 빈이 2개 이상이면 어떤 빈이 선택되나요? A. 에러가 납니다. @Qualifier나 @Primary를 사용해주세요. 안녕하세요. 오늘은 의존 관계를 주입할 때, 조회되는 빈이 2개 이상일 때 어떻게 해결하는지 알아봅시다. 문제 상황 OrderServiceImpl 객체가 DiscountPolicy를 의존하고 있는 상황을 생각해봅시다. DiscountPolicy는 interface이고, 구현체로 FixDiscountPolicy와 RateDiscountPolicy가 있습니다. 정리하면 아래 사진과 같습니다. OrederServiceImpl 객체가 DiscountPolicy 의존 관계를 주입 받으려고 할 때, FixDiscountPolicy 객체와 RateDisc.. 2022. 1. 9.
7-1. 스프링 의존관계 주입 4가지 방법 Q. 생성자 주입 외에, 다른 방법으로 의존관계를 주입할 수 있나요? A. 다른 방법도 가능하지만, 생성자 주입을 권장합니다. 안녕하세요. 스프링에서는 의존관계를 주입하는 4가지 방법을 지원합니다. 4가지는 생성자 주입, 수정자 주입(setter 주입), 필드 주입, 일반 메서드 주입입니다. 이 중 생성자 주입이 가장 권장됩니다. 한 개씩 자세히 알아보고, 생성자 주입을 사용해야 하는 이유와 편리한 생성자 주입을 지원하는 어노테이션을 알아보겠습니다. 생성자 주입 생성자 주입은 가장 많이 사용되는 방법이며, 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법입니다. 생성자 위에 @Autowired를 명시해주면 됩니다. 예제 코드를 봅시다. @Component public class OrderServi.. 2022. 1. 8.
6-1. 컴포넌트 스캔 설정 정보 클래스에서 객체를 만들어 의존 관계를 주입하는 것보다 간단한 방법이 없을까요? 안녕하세요. 오늘은 컴포넌트 스캔에 대해 알아보겠습니다. 앞서 스프링 빈을 등록하기 위해서 설정 정보 클래스를 만들고, 싱글톤을 보장하기 위해 @Configuration을 붙이며, method 위에는 @Bean을 붙인다는 것을 학습하였습니다. 공부를 위해 간단한 코드를 작성할 때는 설정 정보 클래스를 만들어서 의존 관계를 직접 주입할 수 있지만, 서비스가 커지면 하나하나 의존 관계를 주입해주고 관리하기 어려울 것입니다. 게다가 빈 객체를 만들기 위해 객체 생성 메소드 위에 @bean을 각각 붙여줘야 하는데, 붙여주는 것도 귀찮습니다. 따라서 설정 정보 클래스를 간소화하고, 의존 관계를 자동으로 주입하는 방법을 알아보.. 2022. 1. 7.
5-2. 싱글톤 방식의 주의점: stateless로 설계하기 싱글톤 방식을 사용할 때 주의점이 있나요? 안녕하세요. 싱글톤 컨테이너를 배우면서, 중요한 주의점을 학습하였습니다. 싱글톤 방식을 잘못 사용하면 실무에서 커다란 문제를 만들 수 있습니다! 실제로 몇 년에 한 번씩은 정말 해결하기 어려운 큰 문제가 터진다고 합니다. 싱글톤 방식의 잘못된 사용은 바로 'stateful(상태유지)'입니다. 싱글톤 객체 인스턴스에 특정 상태를 유지하면 안 됩니다. 여러 사용자가 같은 싱글톤 인스턴스에 접근하기 때문에, 특정 클라이언트에 의존적인 필드가 있으면 안 됩니다. 싱글톤 객체는 가능하면 읽기만 가능해야 하고, 값을 수정하면 안 됩니다. 이처럼 특정 상태를 유지하지 않는 것이 stateless(무상태)입니다. 싱글톤 방식을 사용하려면 stateless를 보장해야 합니다. .. 2022. 1. 7.