内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

javaproperty配置文件管理工具框架過(guò)程詳解

這篇文章主要介紹了java property配置文件管理工具框架過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),溫嶺企業(yè)網(wǎng)站建設(shè),溫嶺品牌網(wǎng)站建設(shè),網(wǎng)站定制,溫嶺網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,溫嶺網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

property

property 是 java 實(shí)現(xiàn)的 property 框架。

特點(diǎn)

  • 優(yōu)雅地進(jìn)行屬性文件的讀取和更新
  • 寫(xiě)入屬性文件后屬性不亂序
  • 靈活定義編碼信息
  • 使用 OO 的方式操作 property 文件
  • 支持多級(jí)對(duì)象引用

快速開(kāi)始

環(huán)境依賴

Maven 3.x

Jdk 1.7+

Maven 引入依賴

<dependency>
  <groupId>com.github.houbb</groupId>
  <artifactId>property</artifactId>
  <version>0.0.4</version>
</dependency>

入門(mén)案例

讀取屬性

PropertyBs.getInstance("read.properties").get("hello");

read.properties 為文件路徑,hello 為存在的屬性值名稱。

讀取屬性指定默認(rèn)值

final String value = PropertyBs.getInstance("read.properties")

.getOrDefault("hello2", "default");

read.properties 為文件路徑,hello2 為不存在的屬性值名稱,default 為屬性不存在時(shí)返回的默認(rèn)值。

設(shè)置屬性

PropertyBs.getInstance("writeAndFlush.properties").setAndFlush("hello", "world-set");

writeAndFlush.properties 為文件路徑,hello 為需要設(shè)置的屬性信息。

引導(dǎo)類方法概覽

序號(hào)方法說(shuō)明
1getInstance(propertyPath)獲取指定屬性文件路徑的引導(dǎo)類實(shí)例
2charset(charset)指定文件編碼,默認(rèn)為 UTF-8
3get(key)獲取 key 對(duì)應(yīng)的屬性值
4getOrDefault(key, defaultValue)獲取 key 對(duì)應(yīng)的屬性值,不存在則返回 defaultValue
5set(key, value)設(shè)置值(內(nèi)存)
6remove(key)移除值(內(nèi)存)
7flush()刷新內(nèi)存變更到當(dāng)前文件磁盤(pán)
9flush(path)刷新內(nèi)存變更到指定文件磁盤(pán)
10set(map)設(shè)置 map 信息到內(nèi)存
11set(bean)設(shè)置 bean 對(duì)象信息到內(nèi)存
12asMap()返回內(nèi)存中屬性信息,作為 Map 返回
13asBean(bean)返回內(nèi)存中屬性信息到 bean 對(duì)象中

對(duì)象

簡(jiǎn)介

我們希望操作 property 可以想操作對(duì)象一樣符合 OO 的思想。

設(shè)置值

User user = new User();
user.setName("hello");
user.setHobby("hobby");

final long time = 1574147668411L;
user.setBirthday(new Date(time));

PropertyBs propertyBs = PropertyBs.getInstance("setBean.properties")
    .set(user);

Assert.assertEquals("hobby", propertyBs.get("myHobby"));
Assert.assertEquals("1574147668411", propertyBs.get("birthday"));

讀取值

PropertyBs propertyBs = PropertyBs.getInstance("setBean.properties"
    .set("myHobby", "play")
    .set("birthday", "1574147668411");
User user = new User();
propertyBs.asBean(user);
Assert.assertEquals("play", user.getHobby());
Assert.assertEquals(1574147668411L, user.getBirthday().getTime());

對(duì)象定義

User.java

public class User {
  private String name;
  @PropertyField("myHobby")
  private String hobby;
  @PropertyField(converter = DateValueConverter.class)
  private Date birthday;

}

@PropertyField 注解

序號(hào)屬性默認(rèn)值說(shuō)明
1value當(dāng)前字段名稱對(duì)應(yīng)的 property 屬性名稱
2converter默認(rèn)轉(zhuǎn)換實(shí)現(xiàn) DefaultValueConverter對(duì)當(dāng)前字段進(jìn)行屬性的轉(zhuǎn)換處理

自定義轉(zhuǎn)換類

DateValueConverter.java

這個(gè)就是我們針對(duì) Date 類型,自己實(shí)現(xiàn)的處理類型。

實(shí)現(xiàn)如下:

public class DateValueConverter implements IValueConverter {
  @Override
  public Object fieldValue(String value, IFieldValueContext context) {
    return new Date(Long.parseLong(value));
  }

  @Override
  public String propertyValue(Object value, IPropertyValueContext context) {
    Date date = (Date)value;
    return date.getTime()+"";
  }
}

集合

說(shuō)明
有時(shí)候一個(gè)屬性可能是集合或者數(shù)組,這里暫時(shí)給出比較簡(jiǎn)單的實(shí)現(xiàn)。

將字段值直接根據(jù)逗號(hào)分隔,作為屬性值。

測(cè)試案例

UserArrayCollection userArrayCollection = buildUser();
PropertyBs propertyBs = PropertyBs.getInstance("setBeanArrayCollection.properties")
    .set(userArrayCollection);
Assert.assertEquals("array,collection", propertyBs.get("alias"));
Assert.assertEquals("array,collection", propertyBs.get("hobbies"));

對(duì)象定義

UserArrayCollection.java

public class UserArrayCollection {
  private List<String> alias;
  private String[] hobbies;
}

暫時(shí)只支持 String 類型,不想做的過(guò)于復(fù)雜。

后期將考慮添加各種類型的支持。

多級(jí)對(duì)象

說(shuō)明

有時(shí)候我們?cè)谝粋€(gè)對(duì)象中會(huì)引用其他對(duì)象,比如 對(duì)象 a 中包含對(duì)象 b。

這里采用 a.b.c 這種方式作為屬性的 key, 更加符合使用的習(xí)慣。

測(cè)試案例

設(shè)置

Book book = new Book();
book.name("《海底兩萬(wàn)里》").price("12.34");
UserEntry user = new UserEntry();
user.name("海倫").book(book).age("10");
PropertyBs propertyBs = PropertyBs.getInstance("setBeanEntry.properties")
    .set(user);
Assert.assertEquals("海倫", propertyBs.get("name"));
Assert.assertEquals("10", propertyBs.get("age"));
Assert.assertEquals("《海底兩萬(wàn)里》", propertyBs.get("book.name"));
Assert.assertEquals("12.34", propertyBs.get("book.price"));

讀取

Map<String, String> map = new HashMap<>();
map.put("name", "海倫");
map.put("age", "10");
map.put("book.name", "《海底兩萬(wàn)里》");
map.put("book.price", "12.34");
UserEntry userEntry = new UserEntry();
PropertyBs.getInstance("setBeanEntry.properties")
    .set(map)
    .asBean(userEntry);
Assert.assertEquals("UserEntry{name='海倫', age=10, book=Book{name='《海底兩萬(wàn)里》', price=12.34}}",
    userEntry.toString());

對(duì)象定義

UserEntry.java

public class UserEntry {
  private String name;
  private String age;
  @PropertyEntry
  private Book book;
}

Book.java

public class Book {
  private String name;
  private String price;
}

@PropertyEntry 說(shuō)明

@PropertyEntry 注解用來(lái)標(biāo)識(shí)一個(gè)字段是否采用多級(jí)對(duì)象的方式表示。

這個(gè)注解只有一個(gè)屬性,就是 value(),可以用來(lái)給當(dāng)前字段指定一個(gè)別稱,和 @PropertyField 別稱類似。

后續(xù)特性

提供更多內(nèi)置的類型轉(zhuǎn)換實(shí)現(xiàn)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

文章名稱:javaproperty配置文件管理工具框架過(guò)程詳解
文章源于:http://www.rwnh.cn/article26/peoicg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、做網(wǎng)站、企業(yè)網(wǎng)站制作網(wǎng)站排名、虛擬主機(jī)用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
山东省| 家居| 奇台县| 鸡西市| 利川市| 睢宁县| 吴旗县| 开封市| 克拉玛依市| 葫芦岛市| 定襄县| 双柏县| 九台市| 沁阳市| 惠东县| 黄石市| 德昌县| 石屏县| 微博| 黄石市| 玉林市| 慈利县| 武鸣县| 奉贤区| 恩平市| 错那县| 平果县| 荣成市| 博爱县| 多伦县| 铜鼓县| 凤阳县| 沙河市| 宜良县| 乐陵市| 松江区| 合作市| 吴川市| 梁河县| 当涂县| 景泰县|