부트캠프 기록/Serction2

[Spring Core]

bbangduck 2022. 10. 15. 14:34

 

▶자바 빈과 스프링 빈

  java bean spring bean
개념 jsp에서 주로 사용되는 것으로 자바 코드로 작성된 class, 데이터 전달  Spring IoC 컨테이너에 의해 관리되는 객체
scope  page, request, session, application로 나뉘게 되어 언제 소멸하는지 싱글톤으로 관리되는가

 

java bean 규약

  • 클래스는 패기지화 되어야 함
  • 멤버 변수는 property(프로퍼티)라고 부름
  • 접근제한자는 private
  • 외부 접근은 게터, 세터로 접근

 

▶Bean Definition Abstract

빈디피니션은 추상화돼있음 (다양한 형태로 빈 데이터를 받아야 하기 때문 class, xml, xxx)
클래스가 전달되면 Bean Definition의 구현체 annotatedGenericBeanDefinition 생성, 

해당객체에서 전달하는 빈 메타정보를 가지고 Spring Contatiner에서 빈 생성

 

 

AnnotatedGenericBeanDefinition (Spring Framework 5.3.23 API)

Extension of the GenericBeanDefinition class, adding support for annotation metadata exposed through the AnnotatedBeanDefinition interface. This GenericBeanDefinition variant is mainly useful for testing code that expects to operate on an AnnotatedBeanDefi

docs.spring.io

 

▶@Component와 @Bean의 차이 

@Component :class 레벨, 내부에서 생성한 클래스에 사용, 스프링이 런타임시에 컴포넌트 스캔을 하여 자동으로 빈을 찾고 등록하는 애노테이션
@Bean: 메서드 레벨,외부라이브러리를 이용해 생성한 객체를 개발자가 수동으로 빈 등록할 때 사용하는 애너테이션
어느시점에 컴포넌트/빈을 사용할지를 아는 게 중요

Bean Inteface, ElementType이 메서드
Component Inteface



스프링부트 내부에도 컴포넌트스캔 애노테이션이 있음