더북(TheBook)

보통은 스프링 부트 자동 구성 클래스의 소스 코드를 볼 필요가 없다. 하지만 표 2-1에 있는 애너테이션을 사용하는 방법을 보여 주려고 스프링 자동 구성 라이브러리가 제공하는 DataSource AutoConfiguration 일부를 발췌했다.


@Configuration
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
@EnableConfigurationProperties(DataSourceProperties.class)
@Import({ Registrar.class, DataSourcePoolMetadataProvidersConfiguration.class })
public class DataSourceAutoConfiguration {
    ...
}

DataSourceAutoConfiguration@Configuration 애너테이션이 붙은 클래스로 다른 구성 클래스에서 추가적으로 구성을 가져오며, 자체적으로도 빈을 몇 개 정의한다. DataSourceAutoConfiguration에서 가장 주목할 점은 DataSourceEmbeddedDatabaseType 둘 다 클래스패스에 있도록 요구하려고 @ConditionalOnClass 애너테이션을 붙였다는 것이다. 클래스패스에 DataSourceEmbeddedDatabaseType이 없다면 조건을 만족하지 못하므로 DataSourceAutoConfiguration이 제공하는 구성들은 모두 무시한다.

DataSourceAutoConfiguration에 중첩된 JdbcTemplateConfiguration 클래스는 JdbcTemplate 빈의 자동 구성을 담당한다.


@Configuration
@Conditional(DataSourceAutoConfiguration.DataSourceAvailableCondition.class)
protected static class JdbcTemplateConfiguration {
    @Autowired(required=false)
    private DataSource dataSource;
 
    @Bean
    @ConditionalOnMissingBean(JdbcOperations.class)
    public JdbcTemplate jdbcTemplate() {
        return new JdbcTemplate(this.dataSource);
    }
 

}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.