2015-06-17 18 views
12

Tôi có một lớp thuộc tính bên dưới trong dự án khởi động mùa xuân của tôi.Khởi động mùa xuân: đặt giá trị mặc định thành các thuộc tính có thể định cấu hình

@Component 
@ConfigurationProperties(prefix = "myprefix") 
public class MyProperties { 
    private String property1; 
    private String property2; 

    // getter/setter 
} 

Bây giờ, tôi muốn đặt giá trị mặc định cho một số thuộc tính khác trong tệp application.properties của mình cho property1. Tương tự như những gì bên dưới ví dụ không sử dụng @value

@Value("${myprefix.property1:${somepropety}}") 
private String property1; 

Tôi biết chúng ta có thể gán giá trị tĩnh giống như trong ví dụ dưới đây mà "giá trị mặc định" được gán là giá trị mặc định cho property,

@Component 
@ConfigurationProperties(prefix = "myprefix") 
public class MyProperties { 
    private String property1 = "default value"; // if it's static value 
    private String property2; 

    // getter/setter 
} 

Làm thế nào để làm điều này bằng cách sử dụng lớp @ConfigurationProperties (thay vì các thuộc tính cấu hình kiểu an toàn) trong khởi động mùa xuân, nơi giá trị mặc định của tôi là một thuộc tính khác?

+0

Xin vui lòng, xem câu hỏi này: [http://stackoverflow.com/questions/29220498/why-is-configurationproperties-not-overriding-defaults-in-my-case](http://stackoverflow. com/questions/29220498/why-is-configurationproperties-not-overriding-mặc định-in-my-case) –

Trả lời

5

Kiểm tra xem thuộc tính1 đã được đặt bằng cách sử dụng @PostContruct trong lớp MyProperties của bạn chưa. Nếu không, bạn có thể chỉ định nó cho một thuộc tính khác.

@PostConstruct 
    public void init() { 
     if(property1==null) { 
      property1 = //whatever you want 
     } 
    } 
+2

Điều này đã giải quyết được vấn đề của tôi ngay bây giờ. Nhưng, tôi nghĩ mùa xuân nên cung cấp hỗ trợ cho cùng một giống như @Value. –

+0

Tôi đã tìm kiếm cách đặt mặc định và đây là câu trả lời duy nhất tôi có thể tìm thấy .. nhưng [trên wiki này] (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot- Cấu hình-ràng buộC# mặc định-giá trị) có vẻ như bạn có thể thiết lập một giá trị mặc định cho tài sản của bạn như bạn mong đợi. – evandongen

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