[개인공부] [ Spring ] - Ioc / DI

Mini_me·2021년 10월 31일
0

공부 [Spring]

목록 보기
4/27

레고판 위에 올려놓는 우리의 클래스들(Bean)
판 밖에 있는 애들 : 자바의 클래스
IoC / DI : 큰판을 의미
우리가 만들어놓은 장난감들을 연결시키기도 하고, 무언가를 만드는 등의 개념

Bean

보통 우리가 자바에서 배운 클래스는 어떤 propertiy가 있고, method가 있어서 method가 propertiy가 행위를 하도록 만드는데,
javaBean은 행위들이 없고, 데이터를 저장하기 위한 용도로 사용하는 단순한 구조체이다.
private 프로퍼티와 getter/setter 로만 데이터에 접근한다.

우리가 보는 container안에 화물들을 주고받는 것처럼
스프링도 여러빈들을 담고있다해서 컨테이너라고 한다.
스프링의 IoC를 컨테이너라고 한다.
IoC는 스프링에서 가장핵심적인 컨테이너이다.
Spring application context 기반으로 동작
동작하면서 우리가 만든 class를 bean으로 등록하겠다고 설정값을 만들어 bean으로 등록한다.
Bean으로 등록한다는 것은 우리가 만든 클래스를 그대로 쓰겠다는 건 아니다.
우리가 만든 클래스를 실체 인스턴스 (singleton) 로 인스턴스화한다.
스프링에서의 설정값을 입혀준다.
스프링에서 Bean은 우리가 만든 a,b,c 클래스를 Spring IoC containter 안에 실체로 들고있는 인스턴스인데 그 인스턴스들의 application context가 설정값에 따라 클래스에 설정값을 입혀 공통된 처리를 하는 등을 bean이라고 할 수 있다.

Bean의 등록

자바에서는 Annotation이라는 기능이 있다. 단순 주석의 기능을 하는 것이 아닌 특별한 기능을 사용할 수 있다.
과거에는 xml로 설정을 따로 관리해서 등록해야 되서 불편하였는데
현재는 annotation 기반으로 Bean을 등록한다.
@Bean , @Controller , @service

Bean 이름은 기본적으로는 원 Class 이름에서 첫 소문자만 변경한다.
Scope : Bean을 등록할 때, Bean도 Properity를 갖고있는 Class 이기 때문에
그 Properity값들은 한 번 설정해두면 바꾸지 않도록 설정해서 Singleton으로 설정한다.
한번 만들어놓고 계속 재활용을 한다.
그렇지만 목적에따라 properity를 바꿔야하는 경우가 존재한다.
그럴 경우에는 bean을 계속 쓸 수 가 없다.
request : http 요청마다 새롭게 Bean을 생성하고 싶은 경우 ( 요청 마다 다 다른 Bean을 생성하고 싶은 경우)

0개의 댓글