제공되는 설정 외 직접 구현하고 싶은 경우에는 @Configuration 을 생성하여 도구를 직접 등록할 수 있다.
Package 생성
Configuration class 생성
생성한 패키지 내부에 DatabaseConfiguration이라는 이름으로 클래스를 작성한다.
Bean 생성
Configuration 내부에 @Bean 생성 코드를 작성한다.
@Bean
public DriverManagerDataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("oracle.jdbc.OracleDriver");
dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:xe");
dataSource.setUsername("hacademy");
dataSource.setPassword("hacademy");
return dataSource;
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
return jdbcTemplate;
}
생성된 Bean은 Spring에서 자체적으로 Component scan을 통하여 Spring Container에 등록하므로 프로젝트 내 어디서든 사용 가능하다. 또한 Bean 생성 시 매개변수로 선언된 항목들은 Spring에서 가능한 요소를 찾아서 주입(Injection) 처리한다.
Configuration 생성 시 주의사항
package의 경우 프로젝트 생성 시 입력하는 기본 패키지이거나 그 하위 패키지여야 한다. 만약 해당 패키지가 아닐 경우에는 별도로 @ComponentScan을 추가해야 한다.
@ComponentScan("탐색할패키지이름")
@SpringBootApplication
public class Boot05jdbcApplication {
public static void main(String[] args) {
SpringApplication.run(Boot05jdbcApplication.class, args);
}
}
등록된 Bean 확인
Spring Actuator를 통해 등록된 Bean을 확인할 수 있다. 위의 두 가지 방법 중 하나를 사용하여 등록하였다면 다음과 같이 등록된 bean에서 찾을 수 있다. 이 문서에서는 Configuration 생성방식으로 구현하였다.
Bean 사용
등록이 완료된 Bean은 다음과 같은 Annotation으로 사용할 수 있다.
@Autowired - 일치하는 타입의 대상을 찾아 주입하는 Annotation
@Qualifier - @Autowired와 같이 사용하여 대상의 식별 ID를 사용하여 주입하는 Annotation