dubbo:reference中配置url
<dubbo:reference interface="org.apache.dubbo.demo.DemoService" url="dubbo://localhost:20880" />
通過 -D 參數指定
java -Dorg.apache.dubbo.demo.DemoService=dubbo://localhost:20880
通過文件映射
如果服務比較多,也可以用文件映射,用 -Ddubbo.resolve.file 指定映射文件路徑
java -Ddubbo.resolve.file=resolve.properties resolve.properties org.apache.dubbo.demo.DemoService=dubbo://localhost:20880 org.apache.dubbo.demo.HelloService=dubbo://localhost:20880
ReferenceConfig#resolveFile
public void resolveFile() { // 從系統變量中獲取與接口名對應的屬性值 java -Dorg.apache.dubbo.demo.DemoService=dubbo://localhost:20880 String resolve = System.getProperty(interfaceName); String resolveFile = null; if (StringUtils.isEmpty(resolve)) { // 從系統屬性中獲取解析文件路徑 java -Ddubbo.resolve.file=resolve.properties resolveFile = System.getProperty("dubbo.resolve.file"); if (StringUtils.isEmpty(resolveFile)) { // 從指定位置加載配置文件 File userResolveFile = new File(new File(System.getProperty("user.home")), "dubbo-resolve.properties"); if (userResolveFile.exists()) { // 獲取文件絕對路徑 resolveFile = userResolveFile.getAbsolutePath(); } } if (resolveFile != null && resolveFile.length() > 0) { Properties properties = new Properties(); try (FileInputStream fis = new FileInputStream(new File(resolveFile))) { // 從文件中加載配置 properties.load(fis); } catch (IOException e) { throw new IllegalStateException("Failed to load " + resolveFile + ", cause: " + e.getMessage(), e); } // 獲取與接口名對應的配置 resolve = properties.getProperty(interfaceName); } } if (resolve != null && resolve.length() > 0) { // 將 resolve 賦值給 url url = resolve; if (logger.isWarnEnabled()) { if (resolveFile != null) { logger.warn("Using default dubbo resolve file " + resolveFile + " replace " + interfaceName + "" + resolve + " to p2p invoke remote service."); } else { logger.warn("Using -D" + interfaceName + "=" + resolve + " to p2p invoke remote service."); } } } }