[英]Why bootstrap.properties is ignored by spring-cloud-starter-config?
[英]Spring Boot fails to run schema.sql with dependency on spring-cloud-starter-config
我的spring boot 2.0應用程序識別並運行schema.sql來初始化我的嵌入式h2數據庫。 但是,當我添加spring-cloud-starter-config依賴項時,該應用程序不再運行schema.sql。 為了說明這一點,請使用spring initializr生成依賴於以下內容的Spring Boot 2(v2.0.1)應用程序:
添加實體:
package com.example.demo;
import javax.persistence.*;
@Entity
public class Room {
@Id
@Column(name = "ROOM_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column
private String name;
//...getters and setters
}
實體的存儲庫:
package com.example.demo;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface RoomRepository extends CrudRepository<Room, Long> {
}
主類與initializr生成的內容保持不變:
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
將schema.sql和data.sql文件添加到資源下的基本文件夾中。 Spring Boot使用這些來創建和填充實體的基礎表:
schema.sql:
CREATE TABLE ROOM(
ROOM_ID BIGINT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(16) NOT NULL,
);
data.sql:
INSERT INTO ROOM (NAME) VALUES ('Piccadilly');
INSERT INTO ROOM (NAME) VALUES ('Cambridge');
INSERT INTO ROOM (NAME) VALUES ('Oxford');
INSERT INTO ROOM (NAME) VALUES ('Manchester');
將空的application.properties替換為此application.yml:
spring:
jpa:
hibernate.ddl-auto: none
現在,運行該應用程序並轉到http:// localhost:8080 / rooms 。 應用程序將失敗,並顯示表不存在的JdbcSQLException:
org.h2.jdbc.JdbcSQLException:未找到表“ ROOM”; SQL語句:從room room0_中選擇room0_.room_id作為room_id1_0_,將room0_.name作為name2_0_
現在進入pom.xml並注釋掉對spring-cloud-starter-config依賴項的引用:
<!--
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
-->
重新啟動應用程序,一切正常! 在瀏覽器中打開http:// localhost:8080 / rooms ,您將發現返回了預期的JSON結果(帶有4行)。 這告訴我,是Spring-cloud-starter-config依賴項阻止了Spring執行schema.sql和data.sql初始化數據庫。
使用Spring Cloud依賴項時如何獲取Spring Boot以執行schema.sql和data.sql文件?
我有類似的問題,但是在執行H2數據庫架構創建的測試期間。 我剛剛嘗試了較新的版本spring-boot-starter-parent:2.0.2.RELEASE
Cloud的spring-boot-starter-parent:2.0.2.RELEASE
和Finchley.RC2
,它在我的情況下可以工作。
您的示例花了幾分鍾-在Spring Boot 2.0.1和Spring Cloud Finchley.RC1中可以重現,但在2.0.2和Finchley.RC2中可以正常工作。 我沒有找到github問題,但是看起來像是固定的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.