javahost:使用虛擬DNS省掉開發環境配置hosts文件
學習如何使用java修改DNS解析記錄,采用Properties文件替代hosts文件。
在不同運行環境訪問不同將數據源服務器,為了方便切換是否使用域名替代IP?
如果使用域名的話,在開發環境就需要配置hosts文件
團隊其他成員checkout代碼是否需要文檔告訴他怎么配置hosts文件?
您負責的項目很多怎么辦?為了方便修改hots文件您是否會借助Win Hosts Manager之類的軟件?
討厭寫文檔嗎?想團隊其他成員checkout代碼不用修改hosts文件即可直接運行程序嗎?
javahost(JVM虛擬DNS)幫組您解決這些煩惱,下面帶大家來了解一下如何使用javahost省掉hosts文件配置.
1、配置maven依賴
在pom.xml加入
<dependencies> [...] <dependency> <groupId>io.leopard</groupId> <artifactId>javahost</artifactId> <version>0.0.5-SNAPSHOT</version> </dependency> [...] </dependencies> <repositories> <repository> <id>leopard-snapshots</id> <name>Leopard Snapshots</name> <url>http://leopard.io/nexus/content/repositories/snapshots/</url> </repository> </repositories>
如果您是非maven用戶,可以通過以下鏈接下載jar包.
io.leopard:javahost:0.0.5-SNAPSHOT
2、編寫vdns.properties
src/main/resources/vdns.properties
#MySQL user database user.mysql.guides.leopard.io=127.0.0.1 #Redis user database user.redis.guides.leopard.io=127.0.0.2 #Redis session database session.redis.guides.leopard.io=127.0.0.3
你可以將這些域名解析配置和其他占位符放在同一個文件,value為合法的IP才會設置虛擬DNS 不過我們推薦獨立一個文件配置,這樣會更加清晰些
3、設置虛擬DNS
src/test/java/io/leopard/guides/JettyTest.java
package io.leopard.guides; import io.leopard.javahost.JavaHost; import io.leopard.jetty.JettyServer; import java.io.IOException; import java.net.InetAddress; import java.util.Properties; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PropertiesLoaderUtils; public class JettyTest { private static void loadDns() throws IOException { Resource resource = new ClassPathResource("/vdns.properties"); Properties props = PropertiesLoaderUtils.loadProperties(resource); JavaHost.updateVirtualDns(props); } public static void main(String[] args) throws Exception { loadDns(); JavaHost.printAllVirtualDns();// 打印所有虛擬DNS記錄 System.out.println("IP:" + InetAddress.getByName("user.mysql.guides.leopard.io").getHostAddress());// 驗證一下解析是否正確 JettyServer.start();// 啟動Jetty服務器 } }
單元測試代碼使用虛擬DNS,參考JettyTest即可
4、輸出日志
JavaHost [host=user.redis.guides.leopard.io, ip=127.0.0.2] JavaHost [host=user.mysql.guides.leopard.io, ip=127.0.0.1] JavaHost [host=session.redis.guides.leopard.io, ip=127.0.0.3] IP:127.0.0.1
至此,您團隊其他成員checkout代碼后,已經可以不用修改hosts文件就能運行程序了。
了解Leopard更多功能模塊,請訪問http://leopard.io/
總結
恭喜你!您已經可以學會使用JavaHost配置虛擬DNS,不用再修改煩人的hosts文件,祝您好運。