2023. 11. 30. 19:50 SpringBoot

Bean과 Component

반응형

SpringBoot 에서 작업을 하다보면 Bean과 Component 라는 Annotation을 자주 볼 것이다.
위의 두 Anootation이 어떠한 역할을 하는지, 어느점이 다른지에 대해서 알아보자.

우선 IOC라는 개념이 있다
Inherited Oriented Class의 약자이다( 뻥이고 사실 Inversion Of Control의 약자이다.)
간단하게 말하자면 일종의 제어관계의 역전 이라는 의미인데 기존의 우리가 프로그래밍을 할 시
어떠한 class를 설계하고 해당 class를 code에서 직접 호출하고 관련 함수를 활용하여 output을 얻는다.
이러한 개념과 반대로 IOC는 지정된 방식을 사용하여 코드를 작성하면 code의 호출과 제어를 framework가 자동으로 진행하는데 이러한 특징 때문에 Inversion of control 이라고 부른다.
우리가 알아볼 Bean, Component, 그외 다른 Annotation 은 해당 class, method가 어떠한 역할을 하는지에 대한 meta정보 라고 생각하면 된다.

Bean Annotation
. Bean Annotation의 경우 서드파티나 사용자가 정의하지 않은 객체에 대해서 IOC에 등록(?)하고자 할 때 사용된다.
. 간단한 예 : User 객체를 반환받는 함수 정의


......

@Bean
public User getUser()
{
 ....
  return User.builder()
      .name("test")
      .build()
  ;
}

위의 code block을 보면 User객체를 사용자가 가공한 후 반환하는 것을 볼 수 있는데 해당 User객체는 springboot에서 기본적으로 제공하는 User class이다.
위처럼 User 객체를 가공 후 넘겨주는 code를 작성한 후 Bean을 지정하면, IOC에 의해서 User 를 사용하는 내부 구현에서 위의 함수를 호출하여 User 객체를 활용하게 된다.
=> 즉, 개발자가 직접 User객체를 사용하는 상위 함수를 구현하지 않아도 User를 쓰는 부분에선 해당 함수를 통해서 알아서 사용한다는 의미.

Component Annotation
. Component Annotation의 경우 Bean과 달리, 사용자가 직접 정의한 class에 대해서 IOC를 적용하기 위한 Annotation 이다.
. 대표적인 Component Annotation 으로는 Controller, Service, Repository 등이 있다.
-> 해당 Annotation 들 내부에 Component가 정의되어 있음.

반응형
Posted by Sweetmeats_boy

블로그 이미지
Sweetmeats_boy

태그목록

Yesterday
Today
Total

달력

 « |  » 2024.11
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함