简介
Spring Boot在入门容易,深入难。
它实现了我们之前常用的Spring技术,并通过零配置或者说约定大于配置的方式将其集成在一起,方便开发者快速开发应用,这种封装的方式有好有坏,当然操作变简单这是最真实的体验。
特性
-
快速构建独立Spring应用程序
-
嵌入式Tomcat,Jetty容器,无需部署WAR包
-
简化Maven及Gradle配置
-
尽可能的自动化配置Spring,无代码生成和xml配置
-
直接植入产品环境下的实用功能,比如度量指标、健康检查及扩展配置等
-
对主流开发框架和工具链做无配置集成
优点
-
解决配置繁琐的问题,最大化的实现convention over configuration(约定大于配置);
-
springboot 要解决的问题, 精简配置是一方面, 另外一方面是非常方便的让spring生态圈和其他工具链整合(比如redis, email, elecsearch)
-
依赖于Pivotal和Netflix, SpringBoot可扩展性高
缺点
-
深入的参考文档较少,加上对Spring Boot的auto configuration loading等机制的封装, 让使用者感觉入门容易,但是如果没有完整学习spring的体系,碰到问题就会卡壳。以至于许多使用spring boot的开发者,会遇到各类奇葩问题,却没有参考方案,只能通过开源社区请教问题;
-
版本迭代速度较快, 一些模块改动很大。
SpringBoot 与 SpringCloud 关系
在SpringBoot和SpringCloud关系中,有着以下的依赖关系:
-
Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务;
-
Spring Cloud是一个基于Spring Boot实现的云应用开发工具;
-
Spring boot专注于快速、方便集成的单个个体,
-
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项目的时候,在控制台会默认输出一个默认启动图案,那么这个图案如果你需要的话是可以自己修改的,修改方式很简单:
-
在src/main/resources下新建一个banner.txt文档
1555172338624 -
通过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名:通常使用源代码的类名
日志内容:日志输出
简单使用
-
访问类
在URL访问的类中,定义日志输出:
1555172992027导入log4j的对应的jar包
1555173033350然后在访问路径的方法中,打印日志内容,注意需要打印日志的级别:
1555173065833注:demo中编写两个级别的日志输出,这样可以区别在配置文件中对于级别的限制作用。
-
在application.properties配置文件中,添加以下配置内容:
在输入内容过程,可以根据提示,选择要用的日志属性:
1555173147524然后,根据访问的类,定义其级别:
1555173172134上面的配置方法,体现出可以灵活控制某一个访问类的日志级别。
当日志级别为debug时,可以输出两条日志信息:
1555173328589当日志级别修改为info类型时,就不能输出debug级别的日志信息:
1555173361952
网友评论