2015-05-29 26 views
103

tôi muốn truy cập các giá trị quy định tại application.properties, ví dụ:Làm thế nào để truy cập vào một giá trị được định nghĩa trong tập tin application.properties trong mùa xuân Boot

logging.level.org.springframework.web: DEBUG 
logging.level.org.hibernate: ERROR 
logging.file=${HOME}/application.log 

userBucket.path=${HOME}/bucket 

tôi muốn truy cập userBucket.path trong chương trình chính của tôi trong một ứng dụng khởi động mùa xuân .

Trả lời

144

Bạn có thể sử dụng @Value chú thích và truy cập vào bất động sản trong bất cứ mùa xuân đậu bạn đang sử dụng

@Value("${userBucket.path}") 
private String userBucketPath; 

Các Externalized Configuration phần của tài liệu khởi động mùa xuân, giải thích tất cả các chi tiết mà bạn có thể cần.

+1

là một thay thế có thể lấy từ Spring 'Environment' hoặc thông qua' @ ConfigurationProperties' – sodik

+1

Để thêm vào câu trả lời của @ sodik, đây là một ví dụ cho thấy cách lấy [Môi trường] (https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/env/Environment.html) http: // stackoverflow. com/questions/28392231/how-to-defined-programmatically-the-current-active-profile-sử dụng-spring-boot – cristi

+0

Nếu bạn cần truy cập hơn 10 giá trị, bạn có phải tiếp tục lặp lại ví dụ 10 lần không? – Jesse

88

Cách khác là đưa Môi trường vào hạt của bạn.

@Autowired 
private Environment env; 
.... 

public void method() { 
    ..... 
    String path = env.getProperty("userBucket.path"); 
    ..... 
} 
+0

thực sự hữu ích khi bạn phải truy cập nhiều vars. Lời khuyên tốt – sarbuLopex

+0

cũng hữu ích khi tên của thuộc tính bạn cần truy cập thay đổi động –

+1

Điều này đáng lẽ phải là câu trả lời được chấp nhận! – Spark

2

@ConfigurationProperties có thể được sử dụng để để ánh xạ giá trị từ .properties (.yml cũng được hỗ trợ) để một lớp mô hình.

Xem xét tệp Ví dụ sau.

.properties

cust.data.employee.name=Sachin 
cust.data.employee.dept=Cricket 

Employee.java

import org.springframework.boot.context.properties.ConfigurationProperties; 
import org.springframework.context.annotation.Configuration; 

@ConfigurationProperties(prefix = "cust.data.employee") 
@Configuration("employeeProperties") 
public class Employee { 

    private String name; 
    private String dept; 

    //Getters and Setters go here 
} 

Bây giờ giá trị thuộc tính có thể được truy cập bởi autowiring employeeProperties như sau.

@Autowired 
private Employee employeeProperties; 

public void method() { 

    String employeeName = employeeProperties.getName(); 
    String employeeDept = employeeProperties.getDept(); 

} 
0

tôi sẽ đề nghị theo cách sau:

@PropertySource(ignoreResourceNotFound = true, value = "classpath:otherprops.properties") 
@Controller 
public class ClassA { 
    @Value("${myName}") 
    String name; 

    @RequestMapping(value = "/xyz") 
    @ResponseBody 
    public void getName(){ 
     System.out.println(name); 
    } 
} 

đây thuộc tính mới của bạn tập tin tên là "otherprops.properties" và tên thuộc tính là "Myname". Đây là cách triển khai đơn giản nhất để truy cập tệp thuộc tính trong phiên bản khởi động mùa xuân 1.5.8

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