摘要: 原創出處:www.bysocket.com 泥瓦匠BYSocket 但願轉載,保留摘要,謝謝! 「貴專」 — 泥瓦匠java
java.util.Properties 是一個屬性集合。常見的api有以下:git
首先在resources目錄下增長/main/resources/fast.properties:github
fast.framework.name=fast fast.framework.author=bysocket fast.framework.age=1
而後直接上代碼PropertyUtil.java:json
/** * .properties屬性文件操做工具類 * * Created by bysocket on 16/7/19. */ public class PropertyUtil { private static final Logger LOGGER = LoggerFactory.getLogger(PropertyUtil.class); /** .properties屬性文件名後綴 */ public static final String PROPERTY_FILE_SUFFIX = ".properties"; /** * 根據屬性文件名,獲取屬性 * * @param propsFileName * @return */ public static Properties getProperties(String propsFileName) { if (StringUtils.isEmpty(propsFileName)) throw new IllegalArgumentException(); Properties properties = new Properties(); InputStream inputStream = null; try { try { /** 加入文件名後綴 */ if (propsFileName.lastIndexOf(PROPERTY_FILE_SUFFIX) == -1) { propsFileName += PROPERTY_FILE_SUFFIX; } inputStream = Thread.currentThread().getContextClassLoader() .getResourceAsStream(propsFileName); if (null != inputStream) properties.load(inputStream); } finally { if ( null != inputStream) { inputStream.close(); } } } catch (IOException e) { LOGGER.error("加載屬性文件出錯!",e); throw new RuntimeException(e); } return properties; } /** * 根據key,獲取屬性值 * * @param properties * @param key * @return */ public static String getString(Properties properties, String key){ return properties.getProperty(key); } /** * 根據key,獲取屬性值 * * @param properties * @param key * @param defaultValue * @return */ public static String getStringOrDefault(Properties properties, String key, String defaultValue){ return properties.getProperty(key,defaultValue); } /** * 根據key,獲取屬性值 * * @param properties * @param key * @param defaultValue * @param <V> * @return */ public static <V> V getOrDefault(Properties properties, String key, V defaultValue){ return (V) properties.getOrDefault(key,defaultValue); } }
UT以下:api
/** * {@link PropertyUtil} 測試用例 * <p/> * Created by bysocket on 16/7/19. */ public class PropertyUtilTest { @Test public void testGetProperties() { Properties properties = PropertyUtil.getProperties("fast"); String fastFrameworkName = properties.getProperty("fast.framework.name"); String authorName = properties.getProperty("fast.framework.author"); Object age = properties.getOrDefault("fast.framework.age",10); Object defaultVal = properties.getOrDefault("fast.framework.null",10); System.out.println(fastFrameworkName); System.out.println(authorName); System.out.println(age.toString()); System.out.println(defaultVal.toString()); } @Test public void testGetString() { Properties properties = PropertyUtil.getProperties("fast"); String fastFrameworkName = PropertyUtil.getString(properties,"fast.framework.name"); String authorName = PropertyUtil.getString(properties,"fast.framework.author"); System.out.println(fastFrameworkName); System.out.println(authorName); } @Test public void testGetOrDefault() { Properties properties = PropertyUtil.getProperties("fast"); Object age = PropertyUtil.getOrDefault(properties,"fast.framework.age",10); Object defaultVal = PropertyUtil.getOrDefault(properties,"fast.framework.null",10); System.out.println(age.toString()); System.out.println(defaultVal.toString()); } }
Run Console:app
1 10 fast bysocket 1 10 fast bysocket
相關對應代碼分享在 Github 主頁socket
首先,加個Maven 依賴:ide
<!-- Jackson --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-jaxrs</artifactId> <version>1.9.13</version> </dependency>
而後直接上代碼JSONUtil:工具
/** * JSON 工具類 * <p/> * Created by bysocket on 16/7/19. */ public class JSONUtil { private static final Logger LOGGER = LoggerFactory.getLogger(JSONUtil.class); /** * 默認JSON類 **/ private static final ObjectMapper mapper = new ObjectMapper(); /** * 將 Java 對象轉換爲 JSON 字符串 * * @param object * @param <T> * @return */ public static <T> String toJSONString(T object) { String jsonStr; try { jsonStr = mapper.writeValueAsString(object); } catch (Exception e) { LOGGER.error("Java Object Can't covert to JSON String!"); throw new RuntimeException(e); } return jsonStr; } /** * 將 JSON 字符串轉化爲 Java 對象 * * @param json * @param clazz * @param <T> * @return */ public static <T> T toObject(String json, Class<T> clazz) { T object; try { object = mapper.readValue(json, clazz); } catch (Exception e) { LOGGER.error("JSON String Can't covert to Java Object!"); throw new RuntimeException(e); } return object; } }
UT以下:測試
/** * {@link JSONUtil} 測試用例 * <p/> * Created by bysocket on 16/7/19. */ public class JSONUtilTest { @Test public void testToJSONString() { JSONObject jsonObject = new JSONObject(1, "bysocket", 33); String jsonStr = JSONUtil.toJSONString(jsonObject); Assert.assertEquals("{\"age\":1,\"name\":\"bysocket\",\"id\":33}", jsonStr); } @Test(expected = RuntimeException.class) public void testToJSONStringError() { JSONUtil.toJSONString(System.out); } @Test public void testToObject() { JSONObject jsonObject = new JSONObject(1, "bysocket", 33); String jsonStr = JSONUtil.toJSONString(jsonObject); JSONObject resultObject = JSONUtil.toObject(jsonStr, JSONObject.class); Assert.assertEquals(jsonObject.toString(), resultObject.toString()); } @Test(expected = RuntimeException.class) public void testToObjectError() { JSONUtil.toObject("{int:1}", JSONObject.class); } } class JSONObject { int age; String name; Integer id; public JSONObject() { } public JSONObject(int age, String name, Integer id) { this.age = age; this.name = name; this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Override public String toString() { return "JSONObject{" + "age=" + age + ", name='" + name + '\'' + ", id=" + id + '}'; } }
Run Console(拋出了異常信息):
16/07/19 23:09:13 ERROR util.JSONUtil: JSON String Can't covert to Java Object! 16/07/19 23:09:13 ERROR util.JSONUtil: Java Object Can't covert to JSON String!
相關對應代碼分享在 Github 主頁 請看到的Java小夥伴多交流多評論改進之。 參考 黃勇 smart
如以上文章或連接對你有幫助的話,別忘了在文章結尾處評論哈~ 你也能夠點擊頁面右邊「分享」懸浮按鈕哦,讓更多的人閱讀這篇文章。