본문 바로가기
개발(라이브러리,프레임워크)/Spring boot

Bean 생성 관리

by zieunee 2021. 3. 29.
반응형

Annotation

Bean 이란?

  • 애플리케이션의 핵심을 이루는 객체 , Spring IoC컨테이너에 의해 인스턴스화 ,관리 생성이 된다.
  • 애플리케이션의 객체가 지정되면 해당 객체는 getBean()메서드를 통해 가져올 수있다.
  • 애플리케이션 구동 시 JVM안에서 스프링이 bean마다 하나의 객체를 생성하는 것을 의미 (Singleton : 하나의 Bean 정의에 대해서 Spring IoC Container내에 단 하나의 객체만 존재한다 )

 

  • @Autowired로선언되었을때만들어진bean객체는heap에쌓임 -> 클래스는static영역
  • 이런bean객체는GC가관리를하지못한다. --> 컨테이너가중지될때삭제가된다.
  • jvm 에서 heap 은 주로 객체가 만들어질 때 쌓인다.. static에는 전체 코드 등이 쌓임

빈 등록

@ComponentScan 어노테이션과 @Component어노테이션을 사용해서 빈을 등록해준다.

스프링 빈 컨테이너가 빈을 생성해줌 , 스프링 빈 컨테이너는 생명 주기를 관리한다.

컨테이너 종류 ApplicationContext, BeanFactory 2가지로 나누어짐

ApplicationContext

구현하고 있는 클래스의 객체관리 및 의존성 주입을 가능하게 해줌

object 생성, 관계설정 ,자동 생성 , 후처리 등등 BeanFactory를 상속받고 있음

 

@Conponent는

@Controller-@RestController / @Service / @Repository로 나누어진다.

ApplicationContext vs BeanFactory

  1. 인스턴스화 하는 시점이 다름
    • AppliactionContext : pre-loading
    • BeanFactory : lazy -loading
  2. AppliactionContext :
    • 스프링이 제공하는 Appliation 지원기능
    • Bean의 생성, 조회, 등록 등을 담당
    • @Configuration어노태이션이 붙은 자바 파일이나, xml로 만든 <beans로 시작하는 appcontext를 설정정보로 등록하고 @Bean이 붙은 메소드의 이름을 가져와 빈 목록을 만듦
  3. BeanFactory:
    • 빈생성과 제어 관점
    • 중요 기능인 Bean 생성, 조회, 등록을 그대로 받고 여기에 스프링에 제공하는 부가기능을 추가로 제공
반응형

'개발(라이브러리,프레임워크) > Spring boot' 카테고리의 다른 글

vsCode 에서 JUnit Test  (0) 2021.05.26
JPA  (0) 2021.04.04
intellij 초기 설정 , vue.js와 연동  (0) 2021.03.28
xss filter & Interceptor  (0) 2020.01.09
Spring MVC , Spring Boot  (0) 2019.11.19