목록Spring (36)
Rootable의 개발일기
📌 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 또는 생성자를 보고 해당 객체에서 필요한 객체 즉, 의존성(의존 관계)를 주입해 주는 것이다. 결과적으로 개발자가 직..
📌 싱글톤 패턴이 왜 필요한가 일반적으로 웹 애플리케이션에서 초당 많은 고객의 요청이 발생한다. 만약 코어 기능을 수행하는 서비스나 컨트롤러가 요청이 올 때마다 new를 통해 객체를 생성된다면 JVM 메모리가 Fulled 될 것이고, GC의 부담이 가중될 것이다. 이를 방지하기 위해 해당 객체가 딱 1개만 생성되어 공유되도록 하자는 아이디어에서 탄생하게 되었다. 📌 Java 코드를 통해 싱글톤 패턴 구현 static 변수를 선언하고, 메서드를 통해서만 객체를 얻도록 한다. 그리고 생성자는 private 으로 선언하여 new를 통해 객체를 얻지 못하도록 한다. public class SingletonService { private static final SingletonService instance = n..