微服务深入浅出(1)-- SpringBoot
基于Spring的开发框架,旨在简化配置快速开发,是新一代web开发框架。下面介绍一下常用的几个功能:
1、Spring单元测试
针对DAO层
(1) @RunWith(Spring.class),表示要在Spring环境中做测试, 于是就可以使用@Autowired等注解了,
(2) @SpringBootTest(classes=TestBeanConfiguration.class),表示可以使用SpringBoot环境了,这样可以用@Autowired注解,把@Mapper注释过的Mapper对象引入.为了引入外部依赖的Bean对象,需要指定classes=TestBeanConfiguration.class.
注意: 之所以要指定classes=TestBeanConfiguration.class,这时因为Product这个类,并没有使用@Component等注解注入IOC容器.
(3) @Transactional注解来开启事务
(4) @Rollback(true)表示开启回滚数据功能,默认为True.
@RunWith(SpringRunner.class)
@SpringBootTest(classes=TestBeanConfiguration.class)
@Transactional
@Rollback(true)
public class ProductMapperTest { @Autowired
private ProductMapper mapper; @Autowired
private Product product; @Before
public void setUp(){
product.setPname("持续交付");
product.setType("书籍");
product.setPrice(69d);
} @Test
public void testAdd() {
Assert.assertEquals(Integer.valueOf(1), mapper.add(product));
} }
针对Service层
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
public class ProductControllerTest { @Autowired
private TestRestTemplate template; @Test
public void test() {
String body = template.getForObject("/ms/product/1", String.class);
Assert.assertEquals("success", body);
} }
针对Controller
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
public class ProductControllerTest { @Autowired
private TestRestTemplate template; @Test
public void test() {
String body = template.getForObject("/ms/product/1", String.class);
Assert.assertEquals("success", body);
} }
2、Springboot配置文件
@Configuration
@EnableAutoConfiguration //自动加载配置信息
@ComponentScan("com.kelly")//使包路径下带有注解的类可以使用@Autowired自动注入
public class StartApplication {
public static void main(String[] args) {
SpringApplication.run(StartApplication.class, args);
}
}
我们使用@Value("${属性名}")来注入application.yml/application.properties的配置值
当我们使用自定义配置文件的时候,只需要:
@Component
@ConfigurationProperties(prefix="defineTest")
@PropertySource("classpath:define.properties")
public class DefineEntity { private String pname; private String password; public String getPname() {
return pname;
} public void setPname(String pname) {
this.pname = pname;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}
在使用的时候注入DefineEntity Bean即可。
注意:如果需要使用@PropertySource注解的方式加载值,那就要使用properties文件。
3、多环境配置文件
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:
application-dev.properties:开发环境,
application-test.properties:测试环境
application-prod.properties:正式环境
下面介绍三种配置文件的加载方式:
1)直接在启动类上使用@PropertySource注解来加载不同的配置文件

2)修改spring.profiles.active属性

3)执行命令行
如上面介绍所讲的一样,我们可以使用命令行,比如执行java -jar xxx.jar --spring.profiles.active=test
通过上面,三种不同执行方式,我们也可以发现配置文件的优先级,优先级高的配置或覆盖优先级低的配置,同时公共配置属性放到application.properties,私有的配置属性放在application-{profile}.properties文件中。
微服务深入浅出(1)-- SpringBoot的更多相关文章
- 十分钟搭建微服务框架(SpringBoot +Dubbo+Docker+Jenkins源码)
本文将以原理+实战的方式,首先对“微服务”相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 这套微服务框架能干啥? 这套系统搭建完之后,那可就厉害了: 微服务架构 你的整个应用程 ...
- 微服务框架中springboot启动的一个问题
微服务中,采用的是springboot构建单个项目,其中一个项目user启动过程中总是启动补起来,相关的地方都没有错,始终启动不起来,而且要命的是控制台不打印日志,日志级别是debug级别的,但是打印 ...
- 基于LadybugFlow的微服务编排(1.SpringBoot集成)
前言 前面的系列文章里,介绍了ladybugflow的业务可视化的设计以及常见场景的使用方法. 感谢大家对项目的关注. 本篇文章介绍一下基于ladybugflow的微服务编排场景及使用方法. 1. 业 ...
- 微服务深入浅出(7)-- 网关路由Zuul
Zuul用于构建边界服务,致力于动态路由,过滤,监控,弹性伸缩和安全等方向. 1.Zuul+Ribbon+Eureka结合,可以实现智能路由和负载均衡 2.网关将所有服务的API接口统一聚合统一暴露 ...
- 微服务深入浅出(11)-- SpringBoot整合Docker
添加Dockerfile 在目录src/main/resources目录下店家Dockerfile文件: From java MAINTAINER "Eric"<eric.l ...
- 微服务-开发框架之springboot by 大雄daysn
目录 一.关于springboot 二.springboot的实践 2.1发布一个rest的api 2.2端点 2.3健康检查 2.4远程监控 一.关于springboot 由来:spring1.0- ...
- 微服务深入浅出(10)-- Docker
概念 1.Docker引擎 一个运行在服务器上的后台进程 2.Docker客户端 分为两种:CLI和RestAPI,与Docker引擎交互 3.Docker镜像 类似于我们使用的光盘,将程序打包到Do ...
- 微服务深入浅出(9)-- Nginx
Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,处理请求是异步非阻塞的,多个连接(万级别)可以对应一个进程.而Apache是同步多进程模型,一个连接对 ...
- 微服务深入浅出(8)-- 配置中心Spring Cloud Config
Config Server从本地读取配置文件 将所有的配置文件统一写带Config Server过程的目录下,Config Server暴露Http API接口,Config Client调用Conf ...
随机推荐
- 关于es6箭头函数
1 基本用法 ES6 允许使用 “ 箭头 ” (=>)定义函数. var f = v => v; //上面的箭头函数等同于: var f = function(v) { return v ...
- TiDB注意事项
公司最近在上测试的TiDB集群,这款数据库类似MySQL,但又不完全一致,在使用的时候有一下注意事项,在这里记录一下.
- 为什么选择 .NET Core?
为什么选择.NETCore? 学习新的开发框架是一项巨大的投资.您需要学习如何在新框架中编写,构建,测试,部署和维护应用程序.作为开发人员,有许多框架可供选择,很难知道什么是最适合的.即使您正在使用 ...
- background的使用
先简单的介绍颜色表示法 一共有三种:单词,rgb表示法,十六进制表示法 rgb:红色 绿色 蓝色 三原色 光学显示器,每个像素都是有三原色的发光原件组成的,靠明亮度不同调成不同的颜色的 有逗号隔开,r ...
- 子类的实例给父类的引用 在编译器时候 jvm认为他是父类的实例 只会去寻找父类里面的方法 如果调用子类里面的属性或者方法时候 jvm会认为该引用并没有 所以会报错
- DAY5-Flask项目
1.验证参数(WTForms): 当URL为/book/search?q= &page=1 时 ,p=空格,验证器会通过,在forms验证层的book.py文件中添加DataRequired验 ...
- 页面: Fork me on GitHub
一.实现效果如下: 二.代码地址:https://github.com/blog/273-github-ribbons 这是一个国外网友开发的代码, 里面有很多种样式,可以自已随心选择. 三.我们只拿 ...
- Hbase—— rowkey 过滤器(rowfilter)
1.RowFilter 提取rowkey以01结尾数据Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new RegexStri ...
- 解题:CQOI 2017 老C的任务
题面 找到真正的KD-Tree题目了!然而出题人并不打算放KD-Tree过,只能O2了 // luogu-judger-enable-o2 #include<cstdio> #includ ...
- laravel mapSpread 例子
$collection = collect(range(1, 9)); $chunks = $collection->chunk(2); $labeld = $chunks->mapSpr ...