[ Error Description ]
***************************APPLICATION FAILED TO START***************************
Description:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver class
※ 원인 : Project build 할 때 DB 설정 파일의 경로를 찾지 못하여 발생하는 Error
1. [ Spring Boot 2.4 이상의 Version을 사용할 경우 ]
.properties 파일을 사용할 경우 - > spring.config.import 을 사용하여 .properties 파일 경로를 지정할 수 있다.
* application.properties
spring.config.import=device.properties 또는, 설정 파일이 여러개 일 경우 ,(콤마)를 사용하여 properties 파일 경로를 여러개 나열 할 수 있다. spring.cofig.import=device.properties, other.properties
.yml 파일을 사용할 경우 -> spring.config.import 을 사용하여 .yml 설정 파일의 경로를 지정할 수 있다.
*application.yml
[ 방법 1] spring: config: import: applicaiton.yml 마찬가지로 설정 파일이 여러개 일 경우, 배열 형식으로 파일 경로를 지정할 수 있다. [ 방법 2 ] spring: config: import: -application.yml -other.yml
2. [ Spring Boot 2.4이하의 Version을 사용할 경우 ]
* .properties 파일을 사용할 경우
@PropertySource 어노테이션을 사용하여 .properties 파일의 경로를 작성
-> 설정 값을 필요로 하는 bean에게 주입해줄 수 있다.
서버마다 .properties 파일이 여러개 있을 경우에 Main 메소드에서 어떤 Database 설정 파일을 연결해줄 것인 지
아래의 @PropertySource 어노테이션을 사용하여 작성한 database 설정 파일을 연결해주어야 한다.
@EnableWebMvc @SpringBootApplication @PropertySource("classpath:/application-dev.properties") public class EaiWorkspaceApplication { public static void main(String[] args) { SpringApplication.run(EaiWorkspaceApplication.class, args); } }
만약 추가 설정 파일이 여러개 일경우,
@PropertySources 어노테이션을 사용하여 배열로 묶은 다음 깔끔하게 정의하여 사용할 수 있다.@SpringBootApplication @PropertySources({ @PropertySource("classpath:/application-dev.properties"), @PropertySource("classpath:/other.properties") }) public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
이외에 테스트 코드에서 특정 .properties 설정 파일을 사용해야 할 경우
@TestPropertySource 어노테이션을 사용하여 정의할 수 있다.
@SpringBootTest @TestPropertySource("classpath:/device.properties") public class DeviceTest { // ... }
* .yml 파일을 사용할 경우
SpringApplicationBuilder를 사용하여 .properties 파일 경로를 정의할 수 있다.
public class MyApplication { public static void main(String[] args) { new SpringApplicationBuilder(Application.class) .properties("spring.config.location=classpath:/application.yml,classpath:/device-config.yml") .run(args); }
테스트 코드의 경우 @SpringBootTest 어노테이션의 properties에 동일한 값을 넘겨주어 사용할 수 있다.@SpringBootTest( properties = "spring.config.location=classpath:/application.yml,classpath:/device-config.yml" ) public class DeviceTest { // ... }
글 작성 참고 blog : https://seungtaek-overflow.tistory.com/28
[Spring Boot] 추가 설정 파일 사용하기(.properties .yml)
스프링 부트는 설정 파일 형식으로 .properties 또는 .yml(.yaml) 파일 형식으로 설정파일을 작성할 수 있다. 또한 src/main/resources 디렉토리 하위에 있는 application.properties 파일에 있는 설정 값들을 런타
seungtaek-overflow.tistory.com
'컴퓨터 프로그래밍 > Spring' 카테고리의 다른 글
[TEST] Mock 이란? (0) | 2024.02.08 |
---|---|
[Spring기초] Spring 기술면접 준비 - 기초편 (0) | 2023.04.21 |