웹/spring
DI와 컴포넌트 스캔, Configuration
nownow
2025. 1. 12. 17:12
Spring에서는 싱글톤 패턴을 유지하는 의존성 주입을 위해 Spring Bean 개념을 도입.
Repository, Service, Controller 클래스들에 각 어노테이션을 설정해둔다.
서버 실행시에 컴포넌트를 스캔하며 각 유형에 맞게 Spring Bean을 등록해둔다.
다른 컴포넌트에 의존하게되는 컴포넌트(저장소에 의존하는 서비스)에는 Autowired 어노테이션을
통해 private변수에 해당 Bean을 주입해준다.
위 세가지같은 정형화된 컴포넌트는 컴포넌트 스캔 방식을 주로 사용하지만
정형화되지 않은 컴포넌트나 구현클래스를 변경하는 경우(DB변경 등)
Configuration 클래스를 활용해 직접 @Bean으로 등록하고 연결해준다.
@Configuration
public class SpringConfig {
private final DataSource dataSource;
public SpringConfig(DataSource dataSource){
this.dataSource= dataSource;
}
Config의 이 코드는 서버가 실행되며 Configuration 설정 할 때에, DataSource 즉 build.gradle에 있는 db 의존성 드라이버 정보를 기반으로 커넥션 풀에 해당 db 드라이버 connection 객체를 생성하고(application.properties 등의 접속 정보를 활용하며) 그 객체를 다른 Bean에 주입해주기 위한 과정이다.