2016-07-22 23 views
12

Tôi có một dự án Spring sử dụng một dự án khác. Mỗi dự án có hồ sơ mùa xuân riêng của mình khởi tạo từ mã java sử dụng applicationContext.xml*.properties cho mỗi cấu hình. Tôi tiêm hồ sơ từ args[]. Vấn đề là dự án thứ hai sử dụng cấu hình mặc định cho env từapplicationContext.xml Tôi không thể đưa env từ args[] vào dự án thứ hai và tôi đã thử tìm một bài viết sẽ giải thích cách hoạt động của hồ sơ Spring.Cách đặt cấu hình Spring từ biến hệ thống?

  1. Có cấu trúc phân cấp nào trên đó sẽ xem cấu hình khi mặc định không được định cấu hình tại applicationContext.xml?
  2. Hệ thống có lớn hơn cấu hình applicationContext.xml không?
  3. Điều gì bạn nghĩ là giải pháp tốt nhất cho thử thách của tôi?

Các bài viết về chủ đề đó hoặc thậm chí các ví dụ sẽ được đánh giá cao nhất !! Cảm ơn trước.

Trả lời

20

Nếu bạn cung cấp JVM của bạn hồ sơ cá nhân mùa xuân không nên có vấn đề:

java -Dspring.profiles.active=development -jar yourApplication.jar 

Cũng thấy mùa xuân-Tài liệu:

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html

69,5 Đặt các cấu mùa xuân tích cực

Môi trường mùa xuân ent có API cho điều này, nhưng thông thường bạn sẽ đặt thuộc tính Hệ thống (spring.profiles.active) hoặc môi trường hệ điều hành biến (SPRING_PROFILES_ACTIVE). Ví dụ. khởi động ứng dụng của bạn với một đối số -D (nhớ để đặt nó trước lớp chính hoặc lưu trữ jar):

$ java -jar -Dspring.profiles.active = sản xuất bản demo-0.0.1-SNAPSHOT.jar

Trong Spring Boot, bạn cũng có thể đặt cấu hình hoạt động trong application.properties, ví dụ

spring.profiles.active = sản xuất

Một giá trị đặt theo cách này được thay thế bằng tài sản hệ thống hoặc môi trường thiết lập biến, nhưng không phải do SpringApplicationBuilder.profiles() phương pháp. Do đó, API Java sau có thể được sử dụng để tăng thêm các cấu hình mà không thay đổi các giá trị mặc định.

Xem Chương 25, Tiểu sử trong phần ‘Tính năng khởi động mùa xuân’ cho thông tin khác.

1

Giải pháp của tôi là đặt biến môi trường là spring.profiles.active=development. Vì vậy, tất cả các ứng dụng đang chạy trong máy đó sẽ tham chiếu biến và khởi động ứng dụng.Trình tự trong đó lò xo tải một thuộc tính như sau

application.properties 
system properties 
environment variable 
1

Nếu tôi chạy dòng lệnh: java -Dspring.profiles.active=development -jar yourApplication.jar từ thư mục webapplication của tôi nó nói rằng con đường là không chính xác. Vì vậy, tôi chỉ cần được xác định hồ sơ cá nhân trong manualy trong application.properties nộp như thế này:

spring.profiles.active=mysql 

hoặc

spring.profiles.active=postgres 

hoặc

spring.profiles.active=mongodb 
15

SPRING_PROFILES_ACTIVE là biến môi trường để ghi đè/đón xuân hồ sơ

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