일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 생성자 주입
- DIP
- 싱글톤
- mybatis
- 스프링 부트 기본
- assertThat
- DI
- @Configuration
- sqld
- assertThrows
- Effective Java
- thymeleaf
- spring
- JPA
- resultMap
- 스프링부트
- 스프링 컨테이너
- 스프링 부트 입문
- 스프링 프레임워크
- 스프링 빈
- SQL
- Javascript
- 스프링
- springboot
- jdbc
- java
- 스프링 부트
- kafka
- db
- 필드 주입
- Today
- Total
목록Framework/Spring Framework (56)
선 조치 후 분석

프로토타입 스코프 - 싱글톤 빈과 함께 사용 시, 문제점 프로토타입 스코프 - 싱글톤 빈(Bean)과 함께 사용 시 문제점 스프링 컨테이너에 프로토타입 스코프의 빈(Bean)을 요청하면 항상 새로운 객체 인스턴스를 생성해서 반환한다. 하지만, 싱글톤 빈(Bean)과 함께 사용할 때는 의도한 대로 잘 동작하지 않으므로 주의해야 한다. 그림과 코드로 알아보자. 먼저 스프링 컨테이너에 프로토타입 빈(Bean)을 직접 요청하는 예제를 보자. 스프링 컨테이너에 프로토타입 빈(Bean) 직접 요청 1 1. 클라이언트 A는 스프링 컨테이너에 프로토타입 빈(Bean)을 요청한다. 2. 스프링 컨테이너는 프로토타입 빈(Bean)을 새로 생성해서 반환(x01)한다. 해당 빈의 count 필드 값은 0이다. 3. 클라이언트..

빈(Bean) 스코프 + 싱글톤 스코프 + request, session, application (웹 관련 스코프) + 프로토타입 스코프 빈(Bean) 스코프란? 지금까지 우리는 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때까지 유지된다고 학습했다. 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 번역 그대로 빈(Bean)이 존재할 수 있는 범위(영역)를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 (가장 긴 스코프) 프로토 타입 : 스프링 컨테이너는 프로토타입의 빈(Bean)의 생성과 의존관계 주입까지만 관여하고 더는 관리하는 않는 매우..
빈 등록 초기화, 소멸 메서드 지정 + InitializingBean, DisposableBean + 빈(Bean) 기능 + @PostConstruct, @PreDestroy 어노테이션 사용법 앞서 공부한 내용에서 스프링의 빈(Bean) 생명주기 콜백 지원하는 방법에는 3가지가 있다고 공부했다. 1. 인터페이스(InitializingBean, DisposableBean) 2. 설정 정보에 초기화 메서드, 종료 메서드 지정 3. @PostConstruct, @PreDestroy 어노테이션 지원 1. 인터페이스(InitializingBean, DisposableBean) 1. InitializingBean와 DisposableBean를 상속 가장 먼저 저번 내용에서 만들어둔 NetworkClient에 Ini..
빈 생명주기 콜백(Bean LifeCycle Callback Method) + 콜백이란? + 콜백 종류 (초기화, 소멸 전 콜백) + 스프링 빈 라이프사이클 + 커넥션 풀 (Connection Pool) 빈 생명주기 콜백 (Bean LifeCycle Callback Method) : 스프링 빈이 생성되거나 소멸되기 직전에 빈(Bean) 안에 있는 메서드를 호출해주는 기능 콜백 (Call-Back) : 어떠한 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에서 호출하는 함수 커넥션 풀 (Connection Pool) : 일반적으로 서버는 동시에 사용할 수 있는 사람의 수라는 개념이 존재한다. 동시 접속자 수를 벗어나게 될 경우 에러(예외)가 발생하게 된다. 하지만, Connection Pool을 이용하..
자동, 수동의 올바른 실무 운영 기준 + 빈을 자동 및 수동으로 등록해야 할 때 편리한 자동 기능을 기본으로 사용하자. 그러면 어떤 경우에 컴포넌트 스캔과 자동 주입을 사용하고, 어떤 경우에 설정 정보를 통해서 수동으로 빈을 등록하고, 의존 관계도 수동으로 주입해야 할까? 결론부터 이야기하면, 스프링이 나오고 시간이 갈수록 점점 자동을 선호하는 추세다. 스프링은 @Component뿐만 아니라 @Controller, @Service, @Repository처럼 처럼 계층에 맞추어 일반적인 애플리케이션 로직을 자동으로 스캔할 수 있도록 지원한다. 거기에 더해서 최근 스프링 부트는 컴포넌트 스캔을 기본으로 사용하고, 스프링 부트의 다양한 스프링 빈들도 조건이 맞으면 자동으로 등록하도록 설계했다. 설정 정보를 기..
조회한 빈이 모두 필요할 때, List, Map + 다형성 활용 + 동일한 타입의 스프링 빈이 다 필요한 경우 의도적으로 정말 해당 타입의 스프링 빈이 다 필요한 경우도 있다. 예를 들어서, 할인 서비스를 제공하는데, 클라이언트가 할인의 종류(rate, fix)를 선택할 수 있다고 가정해보자. 스프링을 사용하면 소위 말하는 전략 패턴을 매우 간단하게 구현할 수 있다. 코드로 살펴보자. 1. 테스트 코드 생성 public class AllBeanTest { @Test public void findAllBean() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class,DiscountService.class); ..