목록Spring (37)
Rootable의 개발일기
📌 빈 스코프 종류 스코프(Scope)란 빈이 존재할 수 있는(active) 범위를 말한다. 1. 싱글톤 스코프 기본적으로 스프링 빈은 싱글톤으로 생성되므로, default scope로 보면 된다. 싱글톤처럼 스프링 컨테이너의 생성부터 종료까지 유지되는 가장 넓은 범위의 스코프이다. 2. 프로토타입 스코프 프로토타입 빈은 매번 요청할 때마다 새로 생성되는 빈(매번 참조값이 다름)이다. 해당 빈은 프로토타입 스코프 범위를 따르는데, 스프링 컨테이너가 빈의 생성, 의존관계 주입, 초기화까지만 관여하고 더 이상 관리하지 않는 매우 짧은 범위의 스코프이다. 그래서 @PreDestroy와 같은 종료 메서드가 호출되지 않는다. 3. 웹 스코프 웹 요청(HTTP 요청)이 들어오고 나갈 때까지 유지되는 스코프 📌 프로..
📌 BeanFactory 스프링 컨테이너의 최상위 인터페이스 스프링 빈을 관리하고 조회하는 역할을 담당 getBean() 을 제공 ApplicationContext ac = new AnnotationConfigApplicationContext(설정 클래스); Bean bean = ac.getBean(이름, 타입); 📌 ApplicationContext BeanFactory 의 기능을 모두 상속받아서 제공 이 기능 외에도 추가로 부가 기능을 제공 메시지 소스를 활용한 국제화 기능 : 언어 지원 환경변수 : 로컬, 개발, 운영 등을 구분해서 처리 애플리케이션 이벤트 : 이벤트를 발행하고 구독하는 모델을 편리하게 지원 편리한 리소스 조회 : 파일, Resource Path, 외부 등에서 리소스를 편리하게 조회..
❓ 왜 빈 생명 주기를 알아야 할까 예를 들어, 우리가 보통 데이터베이스 또는 Java의 I/O 자원을 사용할 때, 애플리케이션 시작 시점에 초기화를 통해 자원을 받아 오고 종료 시점에 그 자원을 반납한다. 스프링도 마찬가지로 외부에서 자원을 갖고 와서 사용한다면 이러한 초기화와 종료 작업이 필요하다. public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); connect(); call("초기화 연결 메시지"); } public void setUrl(String url) { this.url = url; } //서비스 시작시 호출 public void c..
❓ 의존 관계 주입은 왜 하는 것일까 웹 애플리케이션을 개발할 때 비즈니스 요구 사항을 개발하기 위해 컨트롤러, 서비스, 리포지토리 등으로 분리하여 설계한다. 이것은 Spring MVC 모델을 따른 것으로, 서로 분리되어 각자의 역할에만 충실하도록 개발하기 위함이다. 일반적으로 객체가 필요할 때는 new를 사용하는데, 웹에서 사용자의 클릭 한 번으로도 프로젝트 규모에 따라 정말 많은 객체의 호출이 발생하기도 한다. 이것을 해결하기 위해 스프링 컨테이너에서 필요한 객체들을 싱글톤 객체로서 등록하고 연결하는 역할을 수행하는 것이다. 여기서 연결한다는 것은 스프링에서 명시된 Annotation 또는 생성자를 보고 해당 객체에서 필요한 객체 즉, 의존성(의존 관계)를 주입해 주는 것이다. 결과적으로 개발자가 직..