티스토리 뷰
Spring Bean (스프링 빈)이란?
IoC 컨테이너에 의해 프레임워크로부터 생성되고 관리되는 자바 객체를 의미한다.
스프링 컨테이너에 Bean을 등록하는 방법
1. @ComponentScan에 의한 자동으로 Bean 등록
@Component가 붙은 애너테이션을 사용하면 스프링 컨테이너에 의해 자동으로 Bean으로 등록된다.
@Component가 붙은 대표적인 애너테이션은 다음과 같다.
- @Controller
- @Service
- @Repository
- Controller
UserController는 UserService에 의존한다.
@Controller
public class UserController {
private UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
}
- Service
UserService는 UserRepository에 의존한다.
@Service
public class UserService {
private UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
- Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
2. 수동으로 Bean 등록
@Configuration과 @Bean을 사용하여 수동으로 스프링 컨테이너에 Bean을 등록할 수 있다.
Bean을 관리할 클래스에 @Configuration을 붙이고, 스프링 컨테이너로 관리할 객체를 @Bean을 사용하여 등록한다.
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserService(userRepository());
}
@Bean
public UserRepository userRepository() {
return new UserRepositoryImpl();
}
}