반응형
Spring Boot를 사욜하다보면 applcation.yml파일을 본적이 있을 것이다.
DB로 예시를 들면
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: url
username: 유저UD
password: 비밀번호
Mysql를 사용할떄 application.yml에 datasource를 이런식으로 셋팅해줘야 db연동이 된다.
만약에 우리가 해당 데이터 베이스가 잘 연동됐는지 확인하기 위해서
package hello.jdbc.connection;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
@Slf4j
public class DBConnectionUtil {
public Connection getConnection(){
try{
Connection connection = DriverManager.getConnection(url, username, password);
log.info(url);
log.info(username);
log.info(password);
log.info("Get Connection={}, class={}", connection, connection.getClass());
return connection;
}catch (SQLException e){
throw new IllegalStateException(e);
}
}
}
이런 코드를 작성 후 아래와 같은 테스트 코드를 작성 해보자
package hello.jdbc.connection;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import java.sql.Connection;
import static org.assertj.core.api.Assertions.assertThat;
@Slf4j
class DBConnectionUrilTest {
@Test
void connection() {
Connection connection = DBConnectionUtil.getConnection();
assertThat(connection).isNotNull();
}
}
이 테스트 코드에서 getConnection()메소드를 호출할때 url, username, password는 변수로 선언하거나
혹은 다른 클래스에서 직접 connection 정보를 입력해서 사용하는 경우도 존재하는데,
우리는 위에 있는 application.yml에 설정해놓은 데이터를 사용하기 위해
@Value("${}")를 사용할 것 이다.
사용 법은 아래와 같다.
@Value("${application에서 설정한 데이터}");
만약 datasource에서 설정한 내용으로 데이터를 사용한다면
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
이런식으로 변수위에 @Value를 사용해서 해당 데이터를 사용할 수 있다.
하지만 테스트 코드 작성시 @Value를 사용한다면
해당 url, username, password는 null이 나와서 해당 테스트가 실패한다.
그 이유는 @SpringBootTest 어노테이션을 확인해야한다.
반응형
'study > spring' 카테고리의 다른 글
JPA 설정 (0) | 2023.11.21 |
---|---|
Thymeleaf 설정 (0) | 2023.11.21 |
@ModelAttribute 어노테이션 (0) | 2023.08.02 |
@SpringBootTest 어노테이션 사용 이유 (0) | 2023.08.01 |
SOLID(객체 지향 설계 5원칙) (0) | 2023.03.06 |