Read Properties Files in Java With Owner



Chao xìn các anh chị em!
Nhân dịp tết covit rảnh rỗi, mình share mọi người cách đọc data từ file properties.
Nói về properties, thì mọi người đã quá quen thuộc rồi: dùng để cấu hình 1 số thông tin chung cho framework như url test, browser name...
Và cách đọc file properties, cách truyền thống hay dùng là dùng InputStream để đọc file. Trong 1 lần lang thang trên mạng, mình thấy thư viện này khá hay, nên mình share với mọi người. Cách đọc cũng dễ nữa.
Thông tin thư viện ở đây org.aeonbits.owner : owner : 1.0.12 - Maven Central Repository Search
Và github ở đây matteobaccan/owner: Get rid of the boilerplate code in properties based configuration. (github.com)

Cách dùng như sau:
1. Thêm thư viện vào project maven của bạn

<dependency>
<groupId>org.aeonbits.owner</groupId>
<artifactId>owner</artifactId>
<version>1.0.12</version>
</dependency>
2. Hãy đặt các file properties vào trong src\test\resources


3. Tạo 1 interface đặt tên tùy ý, sau đó extend Config.
Tiếp theo đặt tên và kiểu trả về method tương ứng với các biến trong file properties. (như dòng code số 6)
Nếu muốn dùng tên khác với tên biến trong file properties thì phải sử dụng
@Config.Key("browser") trong đó browser là tên biến tương ứng file properties (như dòng code số 7 và 8)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import org.aeonbits.owner.Config;
import org.aeonbits.owner.Config.*;

@Sources({"classpath:config.properties"})
public interface ReadConfigFile extends Config {
    String url();
    @Config.Key("browser")
    String customName();

}

- Dòng code số 4, hãy chú ý tên file là config.properties

4. Ở class cần đọc chúng, thì sử dụng như sau

import org.aeonbits.owner.ConfigFactory;

public class DemoOwner {

    static ReadConfigFile readConfigFile = ConfigFactory.create(ReadConfigFile.class);

    public static void main(String[] args) {
        System.out.println(readConfigFile.url());

        System.out.println(readConfigFile.customName());
    }
}

Trong đó
ReadConfigFile là tên interface lúc trước.

Câu hỏi đặt ra là nếu có N file properties thì sao? có phải tạo N interface tương ứng?
Không. Nếu muốn thêm các file properties thì hãy thêm cấu hình như sau
Hãy chú ý dòng code số 4 và 5
Sau đó, chúng ta lại thêm các method tương ứng với tên các thuộc tính trong file properties mới vào.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import org.aeonbits.owner.Config;
import org.aeonbits.owner.Config.*;

@LoadPolicy(Config.LoadType.MERGE)
@Sources({
        "classpath:user.properties",
        "classpath:config.properties"
})
public interface ReadConfigFile extends Config {
    String url();
    @Config.Key("browser")
    String customName();
    String name();
    String pass();

}

Vậy là chúng ta đã hiểu cách sử dụng thư viện Owner để đọc file properties khá đơn giản.
Hãy thử ngay cách đọc file properties này và cảm nhận nhé hehe.
Chi tiết xem tại github read properties with owner







0 comments:

Post a Comment