Spring Cloud 初级

一、 Spring Boot 回顾

 

1 什么是 Spring Boot?

 
Spring Boot 是在 Spring 的基础之上产生的(确切的说是在 Spring4.0 的版本的基础之上),
其中“Boot”的意思就是“引导”,意在简化开发模式,是开发者能够快速的开发出基于
Spring 的应用。Spring Boot 含有一个内嵌的 web 容器。我们开发的 web 应用不需要作为 war
包部署到 web 容器中,而是作为一个 jar 包,在启动时根据 web 服务器的配置进行加载。
 

2 在没有使用 Spring Boot 开发时项目时什么样的?

 
2.1在项目中存在大量的 xml 文件,配置相当繁琐
 
2.2整合第三方框架时的配置问题
 
2.3低效的开发效率与部署效率问题3 Spring Boot 解决了什么?
3.1Spring Boot 使配置简单
3.2Spring Boot 使编码加单
3.3Spring Boot 使部署简单
3.4Spring Boot 使监控简单
 

二、 Spring Boot 快速构建项目

 

1 打开 Spring Boot 的官网

 
https://projects.spring.io/spring-boot/
https://start.spring.io/ 构建 Spring Boot 的页面

2 使用 Spring Boot 官网构建项目

 
2.1会自动的帮助我们生成启动类
 
2.2会自动生成存放静态资源的目录,还会生成全局配置文件
 
2.3会自动生成测试代码,当然只是的一个结构。
 
2.4Spring Boot 官方推荐的 jdk 版本为 1.8 或者更高
 

3 构建项目目录结构

三、 Spring Boot 全局配置文件讲解

 

1 修改内嵌容器的端口号

 
server.port=8888
 

2 自定义属性配置

msg=Hello World
@Value("${msg}")
private String msg;
 

3 配置变量引用

 
hello=bjsxt
msg=Hello World ${hello}
@Value("${msg}")
private String msg;
 

4 随机值配置

 

4.1配置随机值

 
num=${random.int}
msg=Hello World ${num}
@Value("${msg}")
private String msg;
用处:配置随机值,在程序中如果有一些运算需要一个随机值,那么可以使用该方式来
生成。注意,只生成一次。
 

4.2配置随机端口

 
server.port=${random.int[1024,9999]}用处:在 SpringCloud 的微服务中,我们是不需要记录 IP 与端口号的。那么我们也就不
需要去维护服务的端口号。让他随机生成就可以了。

四、 yml 配置文件

 
是 Spring Boot 中新增的一种配置文件格式。特点:具备天然的树状结构
 
1 yml 配置文件与 properties 文件的区别
 
1.1配置文件的扩展名有变化
1.2配置文件中的语法有变化
 

2 yml 配置文件的语法

 
2.1在 properties 文件中单词与单词之间是以“.”进行分割,在 yml 中使用“:”进行分割
 
 
2.2yml 的数据格式和 json 的格式很像,都是 K-V 结构的。并且是通过“:”赋值
 
 
2.3在 yml 中缩进一定不能使用 TAB 件,否则会报错。
 
2.4每个 K 的冒号后面一定要加一个空格
 
2.5最后一层key可以直接跟value

五、 logback 日志记录讲解

 
1 导入相关的 jar 包
2 添加 logback.xml 配置文件
 
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="LOG_HOME" value="${catalina.base}/logs/"
/>
<!-- 控制台输出 -->
<appender name="Stdout"
class="ch.qos.logback.core.ConsoleAppender">
<!-- 日志输出编码 --> <layout
class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d 表示日期,%thread 表示线程
名,%-5level:级别从左显示 个字符宽度%msg:日志消息,%n 是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}
[%thread] %-5level %logger{} - %msg%n
</pattern>
</layout>
</appender>
<!-- 按照每天生成日志文件 --> <appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名--> <FileNamePattern>${LOG_HOME}/server.%d{yyyy-MM-dd}.log</FileNa
mePattern> <MaxHistory></MaxHistory>
</rollingPolicy> <layout
class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d 表示日期,%thread 表示线程
名,%-5level:级别从左显示 个字符宽度%msg:日志消息,%n 是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}
[%thread] %-5level %logger{} - %msg%n
</pattern>
</layout>
<!--日志文件最大的大小--> <triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志输出级别 --> <root level="info"> <appender-ref ref="Stdout" />
<appender-ref ref="RollingFile" />
</root>
<!--日志异步到数据库 -->
<!-- <appender name="DB"
class="ch.qos.logback.classic.db.DBAppender">
日志异步到数据库
<connectionSource
class="ch.qos.logback.core.db.DriverManagerConnectionSource">
连接池
<dataSource
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
<user>root</user>
<password>root</password>
</dataSource>
</connectionSource>
</appender> -->
</configuration>

六、 Spring Boot 的配置文件 - 多环境配置

 
profile:代表的就是一个环境变量
语法结构:application-{profile}.properties
 

1 需求:

 
application-dev.properties 开发环境
application-test.properteis 测试环境
application-prod.properteis 生产环境
 

2 运行项目:

 
java -jar xxx.jar --spring.profiles.active={profile}
 

3 完成的命令:

 
java -jar springboot-helloworld-0.0.1-SNAPSHOT.jar --spring.profiles.active=test|dev|prod
 

七、 Spring Boot 核心注解讲解

 
@SpringBootApplication:代表是 SpringBoot 的启动类。
@SpringBootConfiguration:通过 bean 对象来获取配置信息
@Configuration:通过对 bean 对象的操作替代 spring 中 xml 文件
@EnableAutoConfiguration:完成一些初始化环境的配置。
@ComponentScan:来完成 spring 的组件扫描。替代之前我们在 xml 文件中配置组件扫描的
配置<context:component-scan pacage=”....”>
@RestController:1,表示一个 Controller。2,表示当前这个 Controller 下的所有的方法都会以
json 格式的数据响应。
 

八、 回顾 SpringBoot 异常处理:

 
@ControllerAdvice+@ExceptionHandler 注解处理异常
代码
@ControllerAdvice
public class MyControllerAdvice {
@ResponseBody
@ExceptionHandler(value=java.lang.Exception.class)
public Map<String, Object> myException(Exception ex) {
Map<String, Object> map = new HashMap<>();
map.put("code", );
map.put("msg", "出错了。");
return map; }
@ResponseBody
@ExceptionHandler(value=java.lang.NullPointerException.c
lass)
public Map<String, Object> myException2(Exception ex) {
Map<String, Object> map = new HashMap<>();
map.put("code", -);
map.put("msg", "空指针异常");
return map; }
@ResponseBody
@ExceptionHandler(value=com.bjsxt.springboothelloworld.e
xception.ApplicationException.class)
public Map<String, Object> myException3(Exception ex) {
Map<String, Object> map = new HashMap<>();
map.put("code", -);
map.put("msg", ex.getMessage());
return map; } }

九、 如何监控 Spring Boot 的健康状况

 
1 使用 Actuator 检查与监控的步骤
1.1在 pom 文件中添加 Actuator 的坐标
1.2在全局配置文件中设置关闭安全限制
 

2 使用可视化的监控报表-Spring Boot Admin

 
2.1使用 Spring Boot Admin 的步骤
2.1.1搭建服务端
 
服务端其实也是一个 SpringBoot 项目
 
2.1.1.1 创建项目

2.1.1.2 访问 Spring Boot Admin 的首页
 
https://github.com/codecentric/spring-boot-admin
修改 pom 文件添加 Spring Boot Admin 坐标
 
 
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>1.5.7</version>
</dependency>
 
2.1.1.3 修改启动类,添加@EnableAdminServer
 
@SpringBootApplication
@EnableAdminServer
public class SpringbootServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootServerApplication.class,
args);
} }
2.1.2搭建客户端
其实客户端就是我们需要监控的工程。
2.1.2.1 修改客户端的 pom 文件添加依赖
 
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>1.5.7</version>
</dependency>
2.1.2.2 修改客户端的 application.properteis 配置文件
management.security.enabled=false
#http://localhost:9090 表示是 Spring Boot Admin 服务单的 IP 地
址以及端口号
spring.boot.admin.url: http://localhost:9090
2.2监控信息讲解
 

springboot之对之前的补充的更多相关文章

  1. springboot 快速开发的定制补充

    增强 SpringBoot 快速开发工具 项目地址:https://gitee.com/sanri/web-ui 优点:这是一个 web 通用配置的组件,即插即用,可用于新项目或私活.是对 Sprin ...

  2. 使用外部容器运行spring-boot项目:不使用spring-boot内置容器让spring-boot项目运行在外部tomcat容器中

    前言:本项目基于maven构建 spring-boot项目可以快速构建web应用,其内置的tomcat容器也十分方便我们的测试运行: spring-boot项目需要部署在外部容器中的时候,spring ...

  3. 源码学习系列之SpringBoot自动配置(篇二)

    源码学习系列之SpringBoot自动配置(篇二)之HttpEncodingAutoConfiguration 源码分析 继上一篇博客源码学习系列之SpringBoot自动配置(篇一)之后,本博客继续 ...

  4. SpringBoot入门及深入

    一:SpringBoot简介 当前互联网后端开发中,JavaEE占据了主导地位.对JavaEE开发,首选框架是Spring框架.在传统的Spring开发中,需要使用大量的与业务无关的XML配置才能使S ...

  5. Spring Boot 实用MyBatis做数据库操作

    前言: 本项目基于maven构建,使用mybatis-spring-boot作为spring-boot项目的持久层框架 spring-boot中使用mybatis持久层框架与原spring项目使用方式 ...

  6. springboot项目抓数据后优化配置及四个补充

    昨天搞了一个抓取某某平台信息的抓取功能,其中有一个地址url,昨天是写死的,之前也进行配置过,印象有些模糊,今天想配置一下,在properties文件中,由此引发了下面的一系列总结操作: 1.原始模式 ...

  7. SpringBoot系列: Spring MVC视图方法的补充

    SpringMVC 视图方法的参数, 已经在这个文章中写得非常清楚了, 链接为 https://www.cnblogs.com/morethink/p/8028664.html 这篇文章做一些补充. ...

  8. springboot知识点补充(一)

    测试配置 @RunWith(SpringRunner.class) @SpringBootTest @Configuration @ActiveProfiles("test") p ...

  9. IntelliJ IDEA 2017版 SpringBoot的web项目补充

    一.注解        @SpringBootApplication:Spring Boot项目的核心注解,主要目的是开启自动配置.        @Configuration:这是一个配置Sprin ...

随机推荐

  1. Python os.renames() 方法

    概述 os.renames() 方法用于递归重命名目录或文件.类似rename().高佣联盟 www.cgewang.com 语法 renames()方法语法格式如下: os.renames(old, ...

  2. “商家参数格式有误”应用切微信H5支付完美解决方案

    一.业务场景发生 最近在跟一些合作公司作业务对接,在对方的APP中接入我们的H5支付,包括微信和支付宝. 那就开搞,进展顺利,貌似一切都在掌握之中,给到对方一个链接即可调起支付.形如: https:/ ...

  3. C++ 中可调用的且有函数功能的东东

    第一个:函数     其实函数在声明的时候都有个名字: 这个名字可以看作是是指针,将其直接赋值给函数指针 也可以看作是可取指的对其& 再赋值给函数指针 第二个:函数指针   通过其被赋值的方式 ...

  4. maven中的陌生单词

    有个单词记不住啊: artifact:人工制品,手工艺品,加工品; 石器; 词根:fac,fact,fect,fic,fig=make,do,表示“做,制作”   因此 art i fact 意思很好 ...

  5. time模块 random模块

    time模块 time.sys等模块是C语言实现的,内置到了python解释器的.而不是py文件. 导入模块的时候,优先到python解释器,然后才会找py文件. #时间戳 #计算 # print(t ...

  6. Android——对话框的全部内容。(课堂总结)

    前面的总结是写过对话框的,但是那只是冰山一角,简单的创建和使用罢了. 今天具体讲下AlertDialog. 首先对话框不需要在布局里写,在活动里new出来的. AlertDialog.Builder ...

  7. CSS卡片右上角标记样式设计

    template <div class="each-one-in-list"> <div class="show-icon">进行中&l ...

  8. 利用遗传算法求解TSP问题

    转载地址 https://blog.csdn.net/greedystar/article/details/80343841 目录 一.问题描述 二.算法描述 三.求解说明 四.参考资料 五.源代码 ...

  9. java.util.Scanner中hasNext()方法和next()方法的区别

    先说结论: 两者均根据空格划分数据 两者在没有数据输入时均会等待输入 next()方法会将空格划分的数据依次输出,运行一次,输出一个 hasNext()方法会跟着next()方法移动,当前数据不为空, ...

  10. 【面经】超硬核面经,已拿蚂蚁金服Offer!!

    写在前面 很多小伙伴都反馈说,现在的工作不好找呀,也不敢跳槽,在原来的岗位上也是战战兢兢!其实,究其根本原因,还是自己技术不过关,如果你技术真的很硬核,怕啥?想去哪去哪呗!这不,我的一个读者去面试了蚂 ...