zoukankan      html  css  js  c++  java
  • springboot之对之前的补充

    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:级别从左显示 5 个字符宽度%msg:日志消息,%n 是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} 
    [%thread] %-5level %logger{50} - %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>30</MaxHistory>
    </rollingPolicy> <layout
    class="ch.qos.logback.classic.PatternLayout">
    <!--格式化输出:%d 表示日期,%thread 表示线程
    名,%-5level:级别从左显示 5 个字符宽度%msg:日志消息,%n 是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} 
    [%thread] %-5level %logger{50} - %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>
    View Code

    六、 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", 500);
    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", -500);
    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", -800);
    map.put("msg", ex.getMessage());
    return map; } }
    View Code

    九、 如何监控 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);
    } }
    View Code
    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监控信息讲解
     
  • 相关阅读:
    oracle常用命令
    批量导出docker镜像
    python中的xpath
    __call__, __str__
    闭包
    ORM操作
    nginx跨域请求
    docker-compose命令
    nginx 之 websocket长连接
    nginx--proxy_set_header
  • 原文地址:https://www.cnblogs.com/wq-9/p/11488497.html
Copyright © 2011-2022 走看看