본문 바로가기
JAVA/Spring

[Spring] Spring Bean이란?(+bean을 등록하는 방법)

by lumayi 2021. 10. 18.

Spring Bean을 이해하려면

제어의 반전(Inversion Of Control)에 대한 이해가 선행되어야 한다!

 

저번에 Spring에 대해서 공부를 하면서

제어의 반전(IOC)라는 특성을 공부했었는데 요약하자면,

 

개발자가 일일히 객체를 직접 생생하고 제어하는 것이 아닌

프로그램(스프링)이 개발자의 코드를 호출해서 객체를 생성하고 제어하는 것을

제어의 반전, 역전 이라고 말한다!

 

https://suzyalrahala.tistory.com/29

 

[spring]비전공자의 시각으로 풀어내는 spring이란?(+spring boot와 차이점)

스프링을 구글링하면 다양한 정보들이 나온다. 정확하고 깔끔한 정보들이 많지만 솔직히 비전공자의 눈으로는 이해할 수 없는 글들이 많다.  '자바 기반의 웹 어플리케이션을 만들 수 있는 프

suzyalrahala.tistory.com

아직 스프링을 잘 모르겠다면 이 글을 먼저 읽는 것이 좋다!

 

이렇게 Spring이 생성하고 제어하는 자바 객체를 Bean이라고 한다.

ApplicationContext.getBean()으로 얻을 수 있는 객체이다.

 


그렇다면 스프링에서 어떻게 설정해야

이 Bean을 만들어 줄 수 있을까??

 

 

2가지의 방법이 있다.

 

1. @ComponentScan 과

@Component 어노테이션을 사용하는 방법

 

2. xml 파일에 직접 bean을 등록하는 방법

 

 

 

우선 첫번째 방법!!

 

@ComponentScan

특정 지점부터 등록하고 싶은 컴포넌트가 있다고 찾으라고 알려주는 역할이고,

@Component

빈으로 등록하고 싶은 클래스이다.

 

ex)

내가 작업하던 프로젝트의 컨트롤러인데

제일 위에 있는 @Controller 어노테이션 안에는

@Component가 내부적으로 이미 등록 되어있기에,

Controller를 명시하는 것만으로도 바로 Spring IoC 컨테이너의 Bean으로 등록된다!

 

 

 

 

그리고 직접 bean을 설정해주는 2번째 방법!!

 

 

이렇게 xml파일에 직접 bean을 설정해줄 수 있다.

태그 안의 세부적인 것들에 대해 설명하자면

 

id: 절대 중복될 수 없는 bean의 이름이다.

class: 등록할 클레스의 주소.

scope: sigleton 이나 prototype타입 중에 설정할 수 있다.

autowire: 특정 autowire모드를 사용할 수 있다.

 

id와 class는 필수적으로 설정해야할 속성이지만 나머지는 선택이다!

 

 

참고 사이트:

https://kyun-s-world.gitbook.io/nowstart/spring/springframeworkcore/1-setting-bean

http://melonicedlatte.com/2021/07/11/232800.html

 

반응형