728x90
함께 보면 좋을 포스팅
[Spring] @Autowired 활용 의존성 주입, Spring Bean (2 / 2)
이전 포스팅에서 이어집니다. 의존성 주입(Dependency Injection) (1 / 2) 의존성 주입 객체가 필요로 하는 어떤 것을 외부에서 전달해주는 행위를 말하며, 포괄적인 의미로서 두 객체 간의 관계를 외부
doinitright.tistory.com
@Configuration, @Bean을 활용한 빈 등록 방법은
@Component, @Service 등과 같은 컴포넌트를 통한 빈 등록 방식과 상이합니다.
오늘은 해당 내용에 대해 학습해보겠습니다.
@Configuration
자바 기반의 설정 클래스를 나타내기 위해 사용됩니다.
해당 어노테이션을 사용 시 스프링 컨테이너는 해당 클래스를 참조해 빈을 생성하고 구성합니다.
사용 방법
클래스 위에 어노테이션을 붙여 해당 클래스는 빈을 생성하고 구성하는 설정 클래스임을 명시합니다.
@Configuration
@EnableWebSecurity
public class SecurityConfig {
...
}
@Bean
@Configuration 이 명시된 클래스 안에서 @Bean 어노테이션을 통해 빈을 정의합니다.
@Bean 어노테이션이 적용된 메소드의 반환 값을 빈으로 등록합니다.
사용 방법
메소드 위에 @Bean 어노테이션을 붙여 사용하며, 매소드의 리턴 값을 빈 객체로 등록됩니다.
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean // IOC 컨테이너에 빈은 맵 형태로 등록된다 : <메소드명, 객체>
PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}
사용 특징
- @Bean을 사용한 빈 객체는 IOC 컨테이너에 <메소드 이름(key), 메소드 반환 객체(value)> 의 맵 형태로 저장, 등록
- 빈의 이름은 기본적으로 메소드의 이름입니다. (따라서 일반적으로 DI를 진행할 필드 객체의 변수명을 메소드명으로 일치시킵니다.
- 동일한 타입의 빈 객체가 없을 시에는 위의 메소드명과 변수명을 일치시키지 않아도 매칭됩니다. (권장 X)
- @Bean(name ="name")으로 이름 변경이 가능합니다.
- @Component로 선언되는 방식과 다르게 빈 객체의 유지보수가 쉽습니다.
- 주입할 빈 객체에 대해 @Configuration, @Bean을 통해 하나의 클래스로 관리하고 있기 때문
@Configuration, @Bean에 대해 알아보았습니다.
'DEV > Spring' 카테고리의 다른 글
[Spring Boot] CORS 에러 해결, CORS 설정 (0) | 2023.12.30 |
---|---|
[Spring Boot] MultipartFile 기반 이미지 저장 / 업로드 기능 구현 (1) | 2023.12.20 |
@RequestParam의 이해 (0) | 2023.11.21 |
[Spring] @Autowired 활용 의존성 주입, Spring Bean (2 / 2) (0) | 2023.11.16 |
의존성 주입(Dependency Injection) (1 / 2) (0) | 2023.11.16 |