Develop/Spring framework

[Spring][Mysql] DataSource

자라선 2020. 7. 31. 11:31

1. DataSource

당연한 말이지만 mysql-connector 라이브러리가 필요하다..

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.19</version>
</dependency>

 

return DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/toad","test","test");

위와 같은 DriverManager.getConnection 보다 확장된 개념이 아래의 DataSource 인터페이스이다.

일반적으로 dataSource를 많이 사용한다.

		SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
		
		dataSource.setDriverClass(com.mysql.jdbc.Driver.class);
		dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/toad");
		dataSource.setUsername("test");
		dataSource.setPassword("test");
		
		return dataSource;

2. xml 변환

기존과 동일하게 bean 하위에 property 태그를 작성하여 주면 된다.

 	<bean id='dataSource' class='org.springframework.jdbc.datasource.SimpleDriverDataSource'>
 		<property name='driverClass' value='com.mysql.jdbc.Driver' />
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/toad" />
		<property name="username" value="test" />
		<property name="password" value="test" />
	</bean>

이전 글에선 ref를 사용해 의존성주입을 하였지만 이번엔 정해진 값이 있기에 ref를 해줄필요없이

그대로 value를 사용해 값을 넣어주면 된다.

하지만 이상한점이 위의 class코드와 비교해봤을때 driverclass의 서로 타입이 다르다는것이다.

class에서는 java.lang.class 타입으로 들어갔지만, xml에서는 string값으로 들어갔다.

 

원래라면 에러를 배출하는것이 맞지만 스프링 프레임워크에서는 xml에 들어가는 타입을

자동 변환 시켜주는 기능이 있다고 한다.

Class driverClass = Class.forName("com.mysql.jdbc.Driver");
dataSource.setDriverClass(driverClass);