我在serverName
java类中有一个配置属性AppConfig
,它从cloud config client
获取值。这个serverName
值用于Java
类和AngularJS Services
。这个serverName
对于不同的环境有不同的价值。
目前我正在使用具有不同值的不同配置文件的pcf spring cloud config
。所以Java
类没有问题访问serverName
,但在AngularJS service
我是manually changing
serverName
值到各自的environment
值,然后将它部署到各自的环境。
无论如何有访问serverName
属性的AppConfig
到我的AngularJS Service
?
@EnableConfigurationProperties
@ConfigurationProperties
@RefreshScope
@Configuration
public class AppConfig {
@Value("${external.server.name}")
private String serverName;
}
application.yml
external:
server:
name: localName
my_service.js
angular.module('myApp').factory('myService', ['$http', '$q', '$window', function($http, $q, $window){
var serverName = 'localName';
// for each env deployment make sure the developer changes the value to respective env value, if not the service will fail
.....
}
您可以创建自己的REST控制器,例如/ config,它返回服务器名称以及客户端可能需要的任何其他内容。在此控制器中,您可以像在AppConfig中那样注入服务器名称。
更简单如果您已经有一个控制器,在您需要服务器名称之前通过angular调用,您可以使用相关值设置类似'x-server-name'的标头。
Stefan的回答对你想做的事情很有用。但是,如果它是您的应用程序服务器,则不应该需要服务器地址。 $http.get('api/getUser')
与$http.get(servername + '/api/getUser')
相同。如果在客户端需要除“服务器名称”之外的任何其他服务器端属性;然后你可以申请斯特凡的答案。