Tôi cần tải thuộc tính từ tệp .yml
, chứa đường dẫn đến thư mục mà ứng dụng có thể đọc tệp từ đó.Khởi động mùa xuân: Tải @Value từ tập tin YAML
Tôi đang sử dụng đoạn mã sau để tiêm bất động sản:
@Value("${files.upload.baseDir}")
private String pathToFileFolder;
File .yml
cho sự phát triển nằm dưới src/main/resources/config/application.yml
, im chạy ứng dụng với lệnh sau đây trong sản xuất, để ghi đè lên các thiết lập phát triển:
java -jar app.jar --spring.config.location=/path/to/application-production.yml
Các tài liệu xuân Boot nói:
SpringApplication sẽ được tải các thuộc tính từ các tập tin application.properties trong các địa điểm sau và thêm chúng vào môi trường mùa xuân:
A/cấu hình thư mục con của thư mục hiện hành.
Thư mục hiện hành
Một classpath/config gốc gói
Các classpath
Cũng như:
Bạn cũng có thể sử dụng YAML ('.yml') tập tin như một alte dẫn đến '.properties'.
File .yml
chứa:
{...}
files:
upload:
baseDir: /Users/Thomas/Code/IdeaProjects/project1/files
{...}
Và lớp Application
tôi được chú thích với:
@SpringBootApplication
@EnableCaching
Khi tôi chạy các ứng dụng, tôi nhận được một ngoại lệ:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'files.upload.baseDir' in string value "${files.upload.baseDir}"
Tôi có sử dụng lớp YamlPropertySourceLoader
hoặc thêm chú thích đặc biệt để bật hỗ trợ cho .yml
trong Khởi động mùa xuân?
Chỉnh sửa: Tệp .yml
chứa một số thuộc tính khác, được tải xuống thành công theo Spring Boot như dataSource.XXX
hoặc hibernate.XXX
.
Chạy chương trình của bạn bằng --debug – Marged
Bạn đã thử sử dụng cùng một tệp '.yaml' trong quá trình phát triển? Chỉ cần lấy nó ra ngoài dự án và thử thực thi nó bằng lệnh. Bằng cách đó, bạn sẽ loại bỏ bất kỳ lỗi đánh máy nào trong tệp. –
Thuộc tính không có 'ở đó ... Có quá nhiều dấu cách trước khi 'tải lên:'. –