본문 바로가기

공부이야기/Spring4

[Spring] Bean? DI? 이제는 친해지자! "Spring"이라 했을 때 많이 나오는 키워드 중 하나는 바로 DI, 즉 의존성 주입이다. 도대체 이게 왜 Spring의 키워드일까? 그 이유는 바로 Spring이 이 DI 과정을 알아서 해 주기 때문이다. 최근에 Spring 공부를 다시 시작하게 되었는데 아주 간단하게 DI에 대해 알아보자! 먼저, DI란 뭘까? DI (Dependency Injection): 의존성 주입 고객 관리 서비스를 개발할 때 고객을 관리하는 Service Class가 있으면 고객의 데이터를 다루는 Dao Class가 있을 것이다. 이 경우 아래와 같이 두 Class간의 의존성이 생기게 된다. class MemberService { private MemberDao memberDao = new MemberDao(); } Mem.. 2022. 9. 24.
[Spring] Bean Scope의 종류 Singleton (싱글톤) 기본 scope. 스프링 컨테이너의 시작과 종료까지 하나의 객체로 유지되는 가장 넓은 범위의 스코프이다. 특정 타입의 Bean을 하나만 만들어 두고 공유해서 사용하기 위함. - Bean에 상태를 저장하는 코드를 작성하는 것은 동시성 문제를 유발함, Prototype (프로토타입) 스프링 컨테이너는 프로토타입 빈의 생성과 의존 관계 주입까지만 관연하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 요청이 오면 항상 새로운 인스턴스를 생성하여 반환하고 이후에 관리하지 않는다. (빈 콜백 중 종료 메소드가 호출 안 된다.) Web (웹) request: 웹 요청이 들어오고 나갈 때 까지 유지되는 스코프 session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프 appl.. 2021. 5. 13.
[Spring] IoC 컨테이너란? (IoC: Inversion of Control) IoC (Inversion of Control) 제어권의 역전 (일반적으로 제어권이란 자기가 사용할 의존성은 스스로 만들어서 사용하는 것을 의미) 제어권이 역전되었다는 것은 다른 누군가가 의존성을 외부에서 줌(DI: Dependency Injection 알아보기)을 의미한다. Spring IoC Container Bean을 구성하고 제공하는 컨테이너. 오브젝트에 대한 제어권을 코드 대신 갖고 있다고 해서 IoC라고 부른다. BeanFactory와 ApplicationContext 두 가지가 있다. BeanFactory Bean의 생성과 설정 및 관리를 맡고 있다. Bean을 등록, 생성, 조회, 반환 관리함. 보통은 이를 확장한 ApplicationContext를 사용함. getBean() 메소드가 정의.. 2021. 5. 2.
[Spring] Dependency Injection(DI) - 의존성 주입 의존성이란? 아래 코드 상를 보면 Room 클래스에서 turnOnLigh()가 호출되기 위해서는 Light 클래스가 필요하다. 이 때, Room 클래스는 Light 클래스에 의존성을 가진다 라고 한다. class Room { private Light light; public Room() { this.light = new Light(); } public turnOnLignt() { this.light.turnOn(); } } 위와 같이 설계하였을 경우, Light 클래스가 수정되었을 때 Room 클래스도 함께 수정해 줘야 하는 문제가 발생한다. 그럼 어떻게 변경해야 하는 것일까? 의존성 주입(DI)이란? 의존성 주입이란 필요한 객체를 직접 생성하는 것이 아니라 외부로부터 필요한 객체를 받아서 사용하는 것... 2021. 5. 2.