免费源码html网站,株洲本地新闻,怎么自己做app,网络营销方案简述我们知道#xff0c;在项目中#xff0c;很多时候需要用到一些配置的东西#xff0c;这些东西可能在测试环境和生产环境下会有不同的配置#xff0c;后面也有可能会做修改#xff0c;所以我们不能在代码中写死#xff0c;要写到配置中。我们可以把这些内容写到applicatio… 我们知道在项目中很多时候需要用到一些配置的东西这些东西可能在测试环境和生产环境下会有不同的配置后面也有可能会做修改所以我们不能在代码中写死要写到配置中。我们可以把这些内容写到application.yml文件中。举个例子在微服务架构中某个服务经常会调用其他服务来获取相关信息那么需要配置其他服务的地址我们可以做如下配置server:port: 8001# 配置多个微服务的地址
url:# 订单微服务的地址orderUrl: http://localhost:8002# 用户微服务的地址userUrl: http://localhost:8003# 购物车微服务的地址shoppingUrl: http://localhost:8004然后在代码中如何获取到这些配置内容呢我们在属性上使用Value注解即可获取到如下import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;RestController
RequestMapping(/test)
public class TestController {private static final Logger LOGGER LoggerFactory.getLogger(TestController.class);Value(${url.orderUrl})private String orderUrl;Value(${url.userUrl})private String userUrl;Value(${url.shoppingUrl})private String shoppingUrl;RequestMapping(/config)public String testConfig() {LOGGER.info(获取的订单服务地址为{}, orderUrl);LOGGER.info(获取的用户服务地址为{}, userUrl);LOGGER.info(获取的购物车服务地址为{}, shoppingUrl);return success;}
}很简单请求一下该8001端口的服务后可以看到控制台会打印出三个服务的地址在实际项目中也是这么用的后面如果因为服务器部署的原因需要修改某个服务的地址那么只要在配置文件中修改即可。这里再引申一个问题随着业务复杂度的增加一个项目中可能会有越来越多的微服务那么代码中如果这样一个个去使用Value注解引入的话太繁琐也不科学。所以可以考虑封装一个配置类。/*** author shengwu ni* date 2018/06/11*/
Component
ConfigurationProperties(prefix url)
public class MicroServiceUrl {private String orderUrl;private String userUrl;private String shoppingUrl;// 省去get和set方法
}使用ConfigurationProperties注解可以指定一个前缀然后该类中的属性名就是配置中去掉前缀后的名字一一对应即可。同时该类上面需要加上Component注解作为组件放到Spring容器中。对了使用ConfigurationProperties需要导入一个依赖dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional
/dependencyOK再写个Controller来测试一下此时不需要再一个个引入了直接通过Resource注解将刚刚的配置类注入进来即可使用了非常方便。如下RestController
RequestMapping(/test)
public class TestController {private static final Logger LOGGER LoggerFactory.getLogger(TestController.class);Resourceprivate MicroServiceUrl microServiceUrl;RequestMapping(/config)public String testConfig() {LOGGER.info(获取的订单服务地址为{}, microServiceUrl.getOrderUrl());LOGGER.info(获取的用户服务地址为{}, microServiceUrl.getUserUrl());LOGGER.info(获取的购物车服务地址为{}, microServiceUrl.getShoppingUrl());return success;}
}关注小编可获得两大新人礼包36份一线互联网Java面试电子书84个Java稀缺面试题视频地址http://yunxi.ai/java/java.html 转载于:https://blog.51cto.com/13672983/2128157