개발 공부는 어려워
반응형

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 어노테이션을 확인해야한다.

 

2023.08.01 - [분류 전체보기] - @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
profile

개발 공부는 어려워

@신입개발자하랑이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!