오늘 배운 것
- Bean 자동 등록이란?
- Bean 수동 등록이란?
- Bean 수동 등록 방법
Bean 자동 등록이란?
- @Component를 class에 붙이게 되면 해당 class는 Bean으로 등록이 된다.
- Component Scan에 의해 @Component가 붙은 class들을 자동으로 scan해 Bean으로 등록해주기 때문이다.
- 일반적으로는 @Component를 사용해 Bean을 자동 등록하는 것이 좋다.
- 프로젝트 규모 커질수록 등록할 Bean이 많아지기 때문에 자동 등록이 더 편리하다.
- 비즈니스 로직과 관련된 클래스들은 수가 많아 @Controller, @Service와 같은 애너테이션들을 사용해서 자동 등록해 관리하면 개발 생산성에 유리하다.
흔히 알고 있는 @Controller, @Service, @Repository 이런 annotation도 코드를 직접 보면 내부에 @Component가 있다.
아래는 @Controller annotation이다.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
/**
* Alias for {@link Component#value}.
*/
@AliasFor(annotation = Component.class)
String value() default "";
}
Bean 수동 등록이란?
Bean 수동 등록은 말 그대로 @Component를 사용하지 않고 Bean을 수동으로 등록하는 것이다.
그렇다면 Bean 수동 등록은 언제 사용되는가?
공통 로그 처리와 같이 비즈니스 로직을 지원하기 위한 공통적인 기능들을 기술 지원 Bean이라고 한다.
이런 기술 지원 Bean을 수동 등록하는 것이다.
기술 지원 Bean을 수동 등록하는 이유는 다음과 같다.
- 기술 지원 Bean은 비즈니스 로직 Bean보다는 수가 적어 수동 등록하기 부담스럽지 않다.
- 수동 등록된 Bean에서 문제 발생했을 때 위치 파악이 쉬운 장점이 있다.
Bean 수동 등록 방법
Bean을 수동 등록하는 방법은 다음과 같다.
- Bean으로 등록하고자 하는 객체를 반환하는 메서드를 선언한다.
- 해당 객체를 반환하는 메서드에 @Bean annotation을 붙인다.
- Bean을 등록하는 메서드가 속한 해당 클래스에 @Configuration annotation을 붙인다.
- Spring 서버 실행될 때 Spring IoC 컨테이너에 해당 객체가 Bean으로 등록된다.
- 이때 Bean의 이름은 메서드명에서 첫글자가 소문자로 바뀐 것이 된다.
@Configuration
public class PasswordConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
위의 코드는 Bean을 수동 등록하는 코드이다.
비밀번호를 암호화 할 때 사용하는 PasswordEncoder를 Bean으로 수동 등록하는 것이다.
이런 비밀번호를 암호화 하는 기술 지원 Bean을 수동 등록하는 것이다.
이때 등록되는 Bean 이름은 passwordEncoder가 되는 것이다.
'TIL' 카테고리의 다른 글
24.09.11 TIL - MSA Service 공통 처리 (1) | 2024.09.12 |
---|---|
24.09.10 TIL - 같은 타입 Bean 여러 개 (0) | 2024.09.10 |
24.09.06 TIL - CSRF (0) | 2024.09.08 |
24.09.05 TIL - Effective Java Item 63 (1) | 2024.09.08 |
24.09.04 TIL - Bean Validation (0) | 2024.09.08 |