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
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
위 오류는 application.properties 혹은 application.yml 파일에 db의 url 이 지정되어있지 않으면 나는 오류인데, 나의 경우에는 URL이 지정되어있었다.
무중단 배포를 구성하던 중 properties 파일에 아래 코드를 추가하니 나는 오류였는데,
spring.config.name=application
위 속성은 아래 세개 속성과 함께 써줘야한다고 한다.
spring.config.name=application
spring.config.activate.on-profile=default
spring.config.location=classpath:/application.properties
spring.config.activate.on-profile
에 local을 적으면 application-local.properties가 실행되고, default
를 적으면 application.properties 가 실행된다.
spring.config.location
은 야물 혹은 프로퍼티스 파일이 속한 위치를 적어주는 것인데,
자신의 위치를 가르킬 때는 위와 같이 적으면 된다.
그래서 application-local.properties를 활성화 시키고 싶다면
아래와 같이 하면 된다.
#기타 속성들 ...
spring.profiles.active=local
spring.config.name=application-local
spring.config.activate.on-profile=local
spring.config.location=classpath:/application-local.properties
# 포트를 다르게 지정하고 싶다면
server.port=8081
이렇게 하면 application-local.properties 파일의 속성은 application.properties 파일의 속성을 오버라이드 한다.
spring.profiles.active=local 라인은 local 프로파일을 활성화하므로,
Spring은 application-local.properties 파일에서 속성을 가져와서 application.properties 파일의 동일한 속성을 덮어쓴다.
따라서, server.port=8081은 application.properties 파일에 정의된 포트 번호 대신 8081로 설정된다.
보통은 포트를 나눌 때는 yml 파일에 아래와 같이 두 개 파일처럼 --- 를 구분자로 나눠 설정을 할 수 있어서 아래 방법을 많이 사용한다.
---
spring:
config:
activate:
on-profile: set1
server:
port: 8081
---
spring:
config:
activate:
on-profile: set2
server:
port: 8082