Không có tài sản grails.config.locations
trong grails 3 nữa, bây giờ Grails 3 sử dụng khái niệm nguồn tài sản của Spring thay vào đó, nhưng làm thế nào tôi có thể đạt được hành vi tương tự trong grails 3 như trong những phiên bản trước? Giả sử tôi muốn ghi đè lên một số thuộc tính property.to.be.overridden
trong tệp ứng dụng .với tệp cấu hình bên ngoài của tôi. Tôi làm nó như thế nào?Ghi đè thuộc tính trong application.groovy với cấu hình bên ngoài trong grails 3
Trả lời
Tương đương grails.config.locations
là spring.config.location
Dưới đây là một ví dụ xác định địa điểm cấu hình trong khi tung ra một lọ từ dòng lệnh (Những lập luận tương tự có thể được sử dụng bên trong ide của bạn)
java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties
Cũng vì bạn đề cập đến việc muốn ghi đè thuộc tính nó là hữu ích để tìm hiểu những cách mùa xuân Boot xử lý cấu hình cụ thể các file tài sản (Nhiều hồ sơ cũng có thể được xác định)
tôi giải quyết này một cách hơi khác nhau, vì vậy tôi có thể tải một file YAML bên ngoài .
Application.groovy
package com.mycompany.myapp
import grails.boot.GrailsApp
import grails.boot.config.GrailsAutoConfiguration
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean
import org.springframework.context.EnvironmentAware
import org.springframework.core.env.Environment
import org.springframework.core.env.PropertiesPropertySource
import org.springframework.core.io.FileSystemResource
import org.springframework.core.io.Resource;
class Application extends GrailsAutoConfiguration implements EnvironmentAware {
static void main(String[] args) {
GrailsApp.run(Application)
}
@Override
void setEnvironment(Environment environment) {
String configPath = System.properties["myapp.config.location"]
if (configPath) {
Resource resourceConfig = new FileSystemResource(configPath);
YamlPropertiesFactoryBean propertyFactoryBean = new YamlPropertiesFactoryBean();
propertyFactoryBean.setResources(resourceConfig);
propertyFactoryBean.afterPropertiesSet();
Properties properties = propertyFactoryBean.getObject();
environment.propertySources.addFirst(new PropertiesPropertySource("myapp.config.location", properties))
}
}
}
Sau đó, tôi xác định file YAML khi tôi chạy nó
dòng lệnh
java -jar -Dmyapp.config.location=/etc/myapp/application.yml build/libs/myapp-0.1.war
Tôi cung cấp liên kết ở trên (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property -files) và nó đọc rằng bạn cũng có thể chỉ định một tệp yaml mà không cần thực hiện các bước bổ sung này. Điều này có hiệu quả với bạn không? Nó nói rằng bạn cần SnakeYAML trên classpath cho nó để làm việc. – Zergleb
- 1. Làm cách nào để ghi đè thuộc tính cấu hình?
- 2. Ghi đè thuộc tính với thuộc tính
- 3. truy cập vào các thuộc tính ứng dụng ($ {appName}) trong cấu hình bên ngoài
- 4. Các thuộc tính ghi đè của Mô hình Xem cơ bản trong ASP.NET MVC 3
- 5. Ghi đè các thuộc tính
- 6. Thuộc tính ghi đè trong javamoney.properties?
- 7. Ghi đè các thuộc tính với MSBuild
- 8. Ghi đè thuộc tính HTMLElement.classList
- 9. Ghi đè Cấu hình Magento
- 10. Ghi đè cấu hình bean cài đặt cấu hình "Chính"
- 11. Có thể ghi đè thuộc tính bắt buộc trên thuộc tính trong mô hình không?
- 12. Nhiều tệp bên ngoài để ghi đè url trong web.config
- 13. Tệp thuộc tính bên ngoài với Weblogic
- 14. Ghi đè cấu hình đăng nhập
- 15. Ghi đè người quan sát thuộc tính
- 16. Ghi đè thuộc tính mô hình ghi đè không ảnh hưởng đến trường nhập simple_form
- 17. Ghi đè các trường hoặc thuộc tính trong lớp con
- 18. EntityFramework cách Ghi đè các thuộc tính
- 19. Sử dụng tệp log4j.properties bên ngoài với Grails
- 20. Ghi đè thuộc tính ủy quyền trong ASP.NET MVC
- 21. Externalizing Grails Cấu hình datasource
- 22. Ghi đè thuộc tính chiều cao
- 23. C# Ghi đè một thuộc tính trong một phân lớp
- 24. Ghi đè cấu hình yml trong spring-boot với đối số dòng lệnh
- 25. symfony2 yaml: ghi đè cấu hình
- 26. Làm thế nào ghi đè lên cấu hình grails từ dòng lệnh
- 27. Ghi đè thuộc tính của vai trò
- 28. grails/cấu hình bên ngoài/grails.config.locations - tệp đường dẫn tuyệt đối "Không tồn tại"?
- 29. Ghi đè thuộc tính với loại tương thích khác nhau
- 30. Không nhúng css luôn ghi đè lên css bên ngoài?
Theo giải thích của Graeme ở đây: http: // grails.1312388.n4.nabble.com/Grails-3-External-config-td4658823.html Bạn có thể sử dụng các thuộc tính. '-Dcom.foo =" test "' ghi đè ** com.foo ** từ application.yaml. Và bạn có thể thêm tệp groovy bên ngoài nếu muốn, xem bài đăng. – olikaf