빈의 생명 주기 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존 관계 주입 -> 초기화 콜백 -> 사용 -> 소멸 전 콜백 -> 스프링 종료 초기화 콜백: 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출 소멸전 콜백: 빈이 소멸되기 직전에 호출 스프링은 크게 3가지 방법으로 빈 생명주기 콜백을 지원한다. 1. InitializingBean, DisposableBean 인터페이스 사용 public class NetworkClient implements InitializingBean, Dispo..
컴포넌트 스캔이란? 지금까지는 @Configuration이 붙은 설정 파일을 이용하여 빈을 수동 주입하였다. 이렇게 개발자가 수동으로 빈을 주입하고 의존 관계를 정해줄 수도 있지만, 만약 등록할 빈이 많다면 일일이 모두 등록해야 해서 상당히 귀찮다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또 의존관계도 자동으로 주입하는 @Autowired라는 기능도 제공한다. @Component public class OrderServiceImpl implements OrderService { private final DiscountPolicy discountPolicy; public OrderServiceImpl(DiscountPolicy discount..
스프링 컨테이너란? 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 한다. 여기서 말하는 자바 객체를 스프링에서는 빈(Bean)이라고 부른다. 이런 식으로 스프링 컨테이너 안에 스프링 빈 저장소가 있고, 그 안에 빈이 들어있다고 생각하면 된다. 스프링 컨테이너의 종류 BeanFactory 스프링 컨테이너의 최상위 인터페이스다. 스프링 빈을 관리하고 조회하는 역할을 담당한다. ApplicationContext BeanFactory 기능을 모두 상속받아서 제공한다. 빈을 관리하고 검색하는 기능을 BeanFactory가 제공해주는데, 그러면 둘의 차이가 뭘까? 정리 ApplicationContext는 BeanFactory의 기능을 상속받는다. App..
(1) 내장 톰캣을 가진다 톰캣을 따로 설치할 필요 없이 바로 실행가능하다. 웹서버 : 클라이언트가 요청하는 정적 콘텐츠를 전달하는 서버 웹 컨테이너 : Servlet, jsp를 실행할 수 있는 소프트웨어, 서블릿 컨테이너라고도 한다. 톰캣은 서블릿 컨테이너 중 하나이다. 요청을 받을 시 서블릿 컨테이너(톰캣)가 request, response 객체를 생성한다. (톰캣에서 BufferedWriter, BufferedReader를 통해 요청으로부터 가변길이의 문자를 받고 request, response 객체를 생성) 이후 요청에 매핑된 서블릿이나 프런트 컨트롤러로 전달 JSP 파일을 요청했을 때 동작 클라이언트가 어떤 동작을 함으로써 hello.jsp를 요청. 클라이언트가 JSP 파일을 요청할 경우 제어권..
스프링 핵심 스프링은 프레임 워크이다. 오픈소스이다. IoC컨테이너를 가진다. IoC(Inversion of Control): 제어의 역전 - Class: 설계도 - Object: 실체화가 가능한 것 롤 게임을 예로 들면 가렌이라는 캐릭터는 클래스가 실제 게임에서 실체화된 것이다. 하지만 챔피언은 추상적인 의미, 실체화가 될 수 없다. - 인스턴스: 실체화된 오브젝트 new 생성자를 통해 오브젝트를 힙 메모리공간에 올리게 되면( 실체화) 참조변수가 메모리 주소값을 가리키게 된다. 이 인스턴스를 다른곳에서 사용하기 위해서 똑같은 생성자를 통해 생성하더라도 이전에 생성된 인스턴스 새로 생성한 인스턴스 다른 메모리 주소를 레퍼런스 하고 있는 다른 인스턴스라고 할 수 있다. 이러한 인스턴스를 사용하기 위해서 스..