티스토리 뷰

JAVA/Spring

[Spring] [Config] DBConfig

stdbc 2019. 10. 6. 20:30

1. Maven에 Spring JDBC 의존성 추가 #Maven

1
2
3
4
5
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
</dependency>
cs

 

2. DBConfig 클래스 작성

[DBConfig.java] 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@Configuration
@EnableTransactionManagement
public class DBConfig implements TransactionManagementConfigurer {
    private String driverClassName = "com.mysql.jdbc.Driver";
    private String url = "uuuuuuu";
    private String username = "nnnnnnn";
    private String password = "ppppppp";
 
    @Bean
    public DataSource dataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
 
    @Override
    public PlatformTransactionManager annotationDrivenTransactionManager() {
        return transactionManger();
    }
 
    @Bean
    public PlatformTransactionManager transactionManger() {
        return new DataSourceTransactionManager(dataSource());
    }
}
cs

 

line 2: @EnableTransactionManagement

  • Spring java config 파일에서 트랜잭션과 관련된 설정 자동으로 해준다 #Transaction
  • PlatformTransactionManager 구현체를 모두 찾아서 그 중 하나를 매핑해서 사용하는 것.
  • 특정 트랜잭션 매니저를 사용하고자 한다면, TransactionManagementCongifurer을 구현하고 원하는 트랜잭션 매니저를 리턴한다.

line 4: 드라이버 로드 + connection에 사용되는 url, name, pwd #JDBC

 

line 10: DataSource 빈 등록 #DataSource

connection pool 생성

 

3. 접속 테스트

커넥션풀이 생성됐는지 = 접속이 됐는지 메인 실행 테스트

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class DataSourceTest {
 
    public static void main(String[] args) {
        ApplicationContext ac = new AnnotationConfigApplicationContext(ApplicationConfig.class);
        DataSource ds = ac.getBean(DataSource.class);
        Connection conn = null;
        try {
            conn = ds.getConnection();
            if(conn != null)
                System.out.println("접속 성공^^");
       }catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if(conn != null) conn.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
cs

 

line 4: ApplicationContext #ApplicationContext

 

line 5: ac의 getBean() 메소드를 이용해서 DataSource를 구현하고 있는 객체를 얻는다


Tip) 소스코드에 DB접속정보 하드코딩 X → 스프링의 application.proterties라는 속성파일을 사용하자 [Spring] 스프링 Properties 관리하기

위치: main/resources/application.properties

 

[application.properties]

1
2
3
4
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=uuuuuuu
spring.datasource.username=nnnnnnn
spring.datasource.password=ppppppp
cs

[DBConfig.java]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@PropertySource("classpath:application.properties")
public class DBConfig implements TransactionManagementConfigurer {
    
    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;
    
    @Value("${spring.datasource.url}")
    private String url;
    
    @Value("${spring.datasource.username}")    
    private String username;
    
    @Value("${spring.datasource.password}")    
    private String password;
}
cs

 

 


 
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함