2016-09-01 16 views
9

Tôi đang phát triển một ứng dụng khởi động mùa xuân. Hiện tại, một số cấu hình của tôi được mã hóa cứng (ví dụ: thuộc tính Hystrix).Khởi động mùa xuân. Chạy các tập lệnh SQL và lấy dữ liệu khi khởi động ứng dụng

Vì vậy, tôi muốn nhận các cấu hình này trong thời gian khởi động ứng dụng của tôi hoặc ngay sau đó.

Có thể thực hiện điều đó bằng khởi động mùa xuân không? Ý tôi là chạy tập lệnh SQL khi khởi động và nhận dữ liệu.

Thuộc tính/cấu hình nên được truy lục và lưu trữ trong ứng dụng của tôi như thế nào?

Tôi đang sử dụng MyBatis và Oracle DB.

+0

Đặt chúng trong application.yml. Làm cho họ phụ thuộc vào hồ sơ. – duffymo

+0

Tôi đã có ý tưởng như vậy, nhưng tại thời điểm này tôi muốn nhận được giá trị từ DB :) – Laurynas

Trả lời

9

Theo mặc định, tải khởi động mùa xuân data.sql và/hoặc data-${platform}.sql. Tuy nhiên, hãy nhớ rằng tập lệnh sẽ được tải ở mọi lần bắt đầu, vì vậy tôi nghĩ rằng nó có ý nghĩa hơn (ít nhất là cho sản xuất), để chỉ có các giá trị đã có trong cơ sở dữ liệu, không được chèn lại vào lúc mọi khởi đầu. Cá nhân tôi chỉ sử dụng khởi tạo cơ sở dữ liệu cho mục đích thử nghiệm/dev khi sử dụng cơ sở dữ liệu bộ nhớ. Tuy nhiên, đây là tính năng được cung cấp bởi Spring-Boot.

nguồn: spring-boot-howto-database-initialization:

Xuân JDBC có một tính năng DataSource initializer. Spring Boot cho phép theo mặc định và tải SQL từ các địa chỉ tiêu chuẩn schema.sql và data.sql (trong thư mục gốc của đường dẫn lớp). Ngoài ra Spring Boot sẽ tải giản đồ - $ {platform} .sql và dữ liệu - $ {platform} .sql files (nếu hiện tại).

src/main/nguồn/dữ liệu oracle.sql:

insert into... 
insert into... 
  • Bạn có thể xác định nền tảng này với: spring.datasource.platform=oracle.
  • Bạn có thể thay đổi tên của tập lệnh sql để tải bằng: spring.datasource.data=myscript.sql.
  • Cùng với data.sql, Spring-boot cũng tải schema.sql (trước khi data.sql).
  • Bạn cũng có thể có một "cập nhật hoặc chèn" logic trong data.sql của bạn: oracle sql: update if exists else insert
+0

Tôi không cần phải chèn dữ liệu. Tôi cần lấy dữ liệu từ DB :) – Laurynas

+0

Tôi hiểu rồi! Hãy xem xét điều này (nó không phải là khởi động mùa xuân cụ thể, nhưng có thể là một giải pháp tốt cho bạn): http://pawel-malczyk.pl/wordpress/?p=540 – alexbt

+0

btw, bạn có thể muốn thay đổi tiêu đề của bạn " Khởi động mùa xuân. Chạy các tập lệnh SQL và lưu trữ dữ liệu khi khởi động ứng dụng "và mô tả" Tôi muốn chạy tập lệnh SQL khi khởi động ... " – alexbt

Các vấn đề liên quan