2012-05-01 29 views
7

Tôi có câu hỏi về tải thuộc tính từ tệp cấu hình tùy chỉnh. Tôi đã thử hai cách tiếp cận khác nhau để tải tệp oauth.properties của mình nhưng tôi không thể nhận được để làm việc vì vậy tôi hy vọng một người nào đó ở đây có thể giúp tôi.Tệp cấu hình tùy chỉnh - Phát! Khung 2.0

Cách tiếp cận đầu tiên tôi đã cố gắng là để thêm các tập tin vào thư mục conf và tham khảo nó thusly:

String oauthPropertiesFile = ClassLoader.getSystemResource("oauth.properties").getFile(); 

Nhưng đó vừa trở về NULL.

Cách tiếp cận thứ hai tôi cố gắng là để thêm:

@include.oauthProperties = oauth.properties 

đến tập tin application.conf và sau đó tham khảo nó trong điều khiển của tôi như:

String clientId = oauthProperties.clientId; 

Tuy nhiên điều này không biên dịch.

Có ai có thể làm sáng tỏ những gì tôi đang làm sai ở đây không?

Trả lời

12

Tôi không chắc liệu conf có phải là một phần của classpath hay không. Vì vậy, tôi sẽ thử /conf/oauth.properties hoặc đặt tệp vào đường dẫn lớp. Hơn nữa, bạn nên sử dụng Play.application.classloader() thay vì Trình nạp lớp.

Về bao gồm: Tôi vẫn nghĩ rằng bạn cần phải gọi Play.application().configuration().get("clientID");

Để phân tích tình huống mà bạn có thể bắt đầu ứng dụng với -Dconfig.trace=loads và phân tích các cấu hình với Play.application().configuration().root().render().

Hy vọng điều này sẽ cung cấp cho bạn đủ gợi ý để bạn có thể giải quyết vấn đề của mình.

16

gì làm việc cho tôi với một tập tin trong /conf:

import com.typesafe.config.ConfigFactory 

val myConfig = ConfigFactory.load("myfile.properties").getConfig("my.config.prefix") 
6

Trong trường hợp chung chung, để lấy bất kỳ tập tin từ thư mục "/ conf", bằng Play 2.2 nó có thể được thực hiện như sau (lưu ý rằng "/ conf" là trên classpath, vì vậy bạn không nên bao gồm nó).

Play.application().classloader().getResource("any_file"); 
-2

Nếu bạn muốn sử dụng scala.io.Source bạn cũng có thể làm điều gì đó như

Source.fromFile(Play.getFile("path-in-your-play-project")) 
Các vấn đề liên quan