SpringBoot学习笔记

简介

Spring Boot在入门容易,深入难。

它实现了我们之前常用的Spring技术,并通过零配置或者说约定大于配置的方式将其集成在一起,方便开发者快速开发应用,这种封装的方式有好有坏,当然操作变简单这是最真实的体验。

特性

  1. 快速构建独立Spring应用程序

  2. 嵌入式Tomcat,Jetty容器,无需部署WAR包

  3. 简化Maven及Gradle配置

  4. 尽可能的自动化配置Spring,无代码生成和xml配置

  5. 直接植入产品环境下的实用功能,比如度量指标、健康检查及扩展配置等

  6. 对主流开发框架和工具链做无配置集成

优点

  1. 解决配置繁琐的问题,最大化的实现convention over configuration(约定大于配置);

  2. springboot 要解决的问题, 精简配置是一方面, 另外一方面是非常方便的让spring生态圈和其他工具链整合(比如redis, email, elecsearch)

  3. 依赖于Pivotal和Netflix, SpringBoot可扩展性高

缺点

  1. 深入的参考文档较少,加上对Spring Boot的auto configuration loading等机制的封装, 让使用者感觉入门容易,但是如果没有完整学习spring的体系,碰到问题就会卡壳。以至于许多使用spring boot的开发者,会遇到各类奇葩问题,却没有参考方案,只能通过开源社区请教问题;

  2. 版本迭代速度较快, 一些模块改动很大。

SpringBoot 与 SpringCloud 关系

在SpringBoot和SpringCloud关系中,有着以下的依赖关系:

  1. Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务;

  2. Spring Cloud是一个基于Spring Boot实现的云应用开发工具;

  3. Spring boot专注于快速、方便集成的单个个体,

  4. Spring Cloud是关注全局的服务治理框架;

spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,

其中,Spring Cloud很大的一部分是基于Spring boot来实现。

Spring boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring boot,属于依赖的关系。

SpringBoot的属性

在SpringBoot中,具有很多的属性可以使用,在这里简单介绍集中常用的属性,详细的可以参考的网址:http://blog.csdn.net/jsyxcjw/article/details/46763639/

定制Banner

修改图标

我们在启动Spring Boot项目的时候,在控制台会默认输出一个默认启动图案,那么这个图案如果你需要的话是可以自己修改的,修改方式很简单:

  1. 在src/main/resources下新建一个banner.txt文档

    1555172338624
  2. 通过http://www.network-science.de/ascii/网站生成需要的字符,将字符拷贝到步骤1所创建的txt文档中,如这里为SpringBoot,复制内容到banner.txt文件中,在此启动项目,就会显示如下图样式:

    1555172382437

关闭Banner

可以修改当然也可以关闭,关闭Banner需要我们稍微修改一下main方法中的代码,如下

SpringApplicationBuilder builder = new SpringApplicationBuilder(Application.class);
//修改Banner的模式为OFF
builder.bannerMode(Banner.Mode.OFF).run(args);

此时,当我们再次启动Project的时候就看不到Banner了

自定义SpringApplication

如果使用默认的SpringApplication不符合条件,那么可以根据本地实例去自定义它,并且可以在其中做一些操作,比如:关闭banner。

public static void main(String[] args){
    SpringApplication app = new SpringApplication(MySpringConfiguration.class);
    app.setShowBanner(false);
    app.run(args);
}

当然也可以创建一个分层的Application,SpringApplicationBuilder允许你以链式方式调用多个方法,包括可以创建层次结构的parent和child方法。

Profiles

Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机。

日志

对于日志输出,在开发过程中会使用到很多,常用的就是Log4J。

简介

Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容。

Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。

默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。在运行应用程序和其他例子时,你应该已经看到很多INFO级别的日志了。

1555172870589
  • 日志打印出来的格式:

    时间日期 | 日志级别 | 进程ID | 分隔符 | 线程名 | Logger名称 | 日志内容

  • 具体解释:

    时间日期:精确到毫秒

    日志级别:ERROR, WARN, INFO, DEBUG or TRACE

    进程ID :进程唯一

    分隔符:--- 标识实际日志的开始

    线程名:方括号括起来(可能会截断控制台输出)

    Logger名:通常使用源代码的类名

    日志内容:日志输出

简单使用

  1. 访问类

    在URL访问的类中,定义日志输出:

    1555172992027

    导入log4j的对应的jar包

    1555173033350

    然后在访问路径的方法中,打印日志内容,注意需要打印日志的级别:

    1555173065833

    注:demo中编写两个级别的日志输出,这样可以区别在配置文件中对于级别的限制作用。

  2. 在application.properties配置文件中,添加以下配置内容:

    在输入内容过程,可以根据提示,选择要用的日志属性:

    1555173147524

    然后,根据访问的类,定义其级别:

    1555173172134

    上面的配置方法,体现出可以灵活控制某一个访问类的日志级别。

    当日志级别为debug时,可以输出两条日志信息:

    1555173328589

    当日志级别修改为info类型时,就不能输出debug级别的日志信息:

    1555173361952
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容