일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Item04
- FCM
- java
- 트랜잭션
- 데이터베이스
- springboot
- Service Locator 패턴
- 이펙티브 자바
- Web
- @MockBean
- Service Locator
- deleteById
- Spring Boot
- @Valid
- Proxy Patter
- NotBlank
- SQL 삽입 공격
- db
- multi module
- @ControllerAdvice
- NotEmpty
- 플라이웨이트
- JPA
- Firebase
- restTemplate
- Effetive Java
- Effective Java
- 디자인 패턴
- @SpyBean
- Connection Pool
- Today
- Total
NoTimeForDawdling
[Spring Boot] Bean 생성 및 등록 방법 본문
Bean이란?
Bean이란 Spring IoC 컨테이너가 관리하는 자바 객체이다. 이때 Bean의 Scope를 지정할 수 있고, Singleton과 Prototype으로 지정할 수 있다. proptotype은 객체 호출 시 매번 새롭게 생성하게 된다.
그렇다면 Bean을 어떻게 만들고 Spring IoC컨테이너에 등록할 수 있을까? 지금부터 한번 알아보도록 하자.
Bean 만드는 방법
개발자가 Bean을 만드는 방법은 크게 두 가지가 있다.
@Component어노테이션을 이용하는 방법과 @Bean어노테이션을 이용하는 방법이다.
@Component
@Component어노테이션은 클래스에 명시해 주면 된다.
@Component
public class ComponentClazz {
private final String name = "component class";
}
@Bean
@Bean어노테이션은 @Configuration이 등록된 클래스 내부 메서드에 명시해 주면 된다.
참고로 @Configuration은 해당 클래스는 하나 이상의 @Bean을 등록하고 있음을 명시하고, 해당 Bean을 정의하고 생성할 수 있도록 Spring Container에 의해 처리될 수 있음을 나타낸다.
public class BeanClazz {
private final String name = "bean class";
}
@Configuration
public class BeanConfigurationClazz {
@Bean
public BeanClazz beanClazz() {
return new BeanClazz();
}
}
Bean 등록 방법
Bean이 등록되는 방법으로 두 가지가 있다.
Component Scan 방법과 Auto Configuration 방법이다.
Component Scan
Component Scan 방식은 @Component어노테이션이 붙은 클래스를 Bean으로 등록하는 방식이다.
@Component 어노테이션이 붙은 클래스 안에 @Bean어노테이션으로 정의한 메서드의 반환 값들도 Bean으로 등록한다. 대신 해당 Bean은 'lite mode'로 사용된다.
이렇게 @Component어노테이션과 @Bean어노테이션을 Bean으로 등록하고 사용할 수 있는 이유는 @ComponentScan이 동작하기 때문이다.
@ComponentScan어노테이션을 따로 설정해 주지 않았는데도 불구하고 왜 Component Scan이 동작할까?
그 이유는 바로 @SpringBootApplication어노테이션에 @ComponentScan 어노테이션이 있기 때문이다.
@ComponentScan어노테이션은 value 또는 basepackage로 Component Scan 시작 지점을 명시할 수 있다.
시작 지점으로 지정된 패키지부터 하위 패키지에 있는 @Component, @Bean어노테이션을 찾아 Bean으로 등록한다.
만약 value나 basepackage를 명시하지 않는다면 @ComponentScan이 작성된 패키지의 하위 패키지에 있는 모든 @Component, @Bean어노테이션을 찾아 Bean으로 등록한다.
Auto Configuration
Auto Configuration 방식은 Spring Boot가 제공하는 클래스를 Bean으로 등록하는 방식이다.
@EnableAutoConfiguration어노테이션 통해 Spring Boot가 제공하는 클래스를 Bean으로 사용할 수 있는데, @ComponentScan어노테이션과 마찬가지로 @SpringBootApplication어노테이션에 포함되어 있어 따로 설정을 해주지 않아도 동작한다.
Spring Boot가 제공하는 클래스는 spring-boot-autoconfigure-[version].jar/META-INF/spring.factories 내부에 명시되어있다.
'SpringBoot' 카테고리의 다른 글
[Spring Boot] FCM Push 메시지 보내기 (0) | 2021.09.14 |
---|---|
우당탕탕 멀티모듈 적용기 (0) | 2021.08.28 |
[Spring Boot] @MockBean, @SpyBean 알아보기 (0) | 2021.06.22 |
[Spring Boot] 이벤트(Event) 사용방법 (0) | 2021.06.17 |
[Spring Boot] @NotNull, @NotEmtpy, @NotBlank 차이점 (0) | 2021.05.14 |