DI, IoC, Bean

김나현·2023년 2월 13일
0

Spring

목록 보기
1/2
post-thumbnail

Bean

스프링에서는 객체를 Bean이라고 부르며, 프로젝트가 실행될 때 사용자가 Bean으로 관리하는 객체들의 생성과 소멸에 관련된 작업을 자동적으로 수행해주는데 객체가 생성되는 곳을 스프링에서는 Bean 컨테이너라고 부른다.


DI(Dependency Injection)

의존성 주입

DI란 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입 기능
객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다.
DI(의존성 주입)를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다.


IoC(Inversion of Control)

의존성 역전

IoC란 "제어의 역전"이라는 의미로, 말 그대로 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미한다.

IoC는 제어의 역전이라고 말하며, 간단히 말해 "제어의 흐름을 바꾼다."라고 한다.

객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 한다.

스프링이 모든 의존성 객체를 스프링이 실행될 때 다 만들어주고 필요한 곳에 주입시켜줌으로써 Bean들은 싱글턴 패턴의 특징을 가지며, 제어의 흐름을 사용자가 컨트롤하는 것이 아니라 스프링에게 맡겨 작업을 처리하게 된다.


내가 이해한 것

  • 어떠한 객체를 생성한 뒤 다른 객체에 생성자로 주입시켜 제어권이 다른 객체에 있게 만드는 것을 DI(Dependency Injection/의존성 주입)이라고한다.
  • 컨테이너는 보통 인스턴스의 생명주기를 관리, 생성된 인스턴스들에게 추가적인 기능을 제공함, 스프링 컨테이너에서 생성되는 객체를 Bean이라고 함
  • 스프링 컨테이너 종류 : BeanFactory(컨테이너 객체 생성, DI 처리 기능 제공, Bean 등록·생성
  • 스프링 Bean : 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트. (자바 빈은 데이터 표현 목적 자바 클래스)

  • 자바 기반 서버 : 서블릿(servlet) 컨테이너
  • 서블릿 컨테이너 : 웹 서버의 내부에서 서블릿(servlet) 클래스 또는 jsp파일을 실행하기 위한 환경을 제공
  • ArrayList<Apple> apples = new ArrayList<Apple>( );
    의 저 <Apple.>이 제네릭임. 제네릭 지정중임.
    효과 : 다른 메서드를 호출 안하고 Apple 메서드만 호출 가능.

컨테이너 클래스들과 특징
컨테이너 클래스 쓰는 이유 : 크기 지정 필요 없음

  • ArrayList, LinkedList : 중복된 요소가 있으며 요소를 추가한 순서대로 출력된다.
  • HashSet : 중복이 허용되지 않았고, 순서가 보장되지 않았다.
  • TreeSet : 중복이 허용되지 않았고, 요소들이 오름차순으로 정렬되어 출력되었다.
  • HashMap : 키(key)와 값(value)가 '=' 로 묶여서 출력되었다. 순서를 보장하지 않는다.
  • TreeMap : HashMap과 같은 형식으로출력되며, key들이 정렬되어 출력된다.
  • LinkedHashMap : HashMap과 같은형식으로 출력되며, 추가된 순서를 보장한다.

- ResponseEntity

Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재한다. 이것은 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스


참조
컨테이너란-무엇일까
[JAVA] 컨테이너 - 기초

profile
열심히 공부하자

0개의 댓글