Springboot项目的创建和配置详细介绍

Spring Boot提供了一种新的编程范式,能在最小的阻力下开发Spring应用程序,可以更加敏捷地开发Spring应用程序,专注于应用程序的功能,不用在Spring的配置上多花功夫,甚至完全不用配置。

Springboot最重要的是以下四个核心:

  1. 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。

  2. 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。起步依赖其实就是特殊的Maven依赖和Gradle依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制的依赖。

  3. 命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。

  4. Actuator:让你能够深入运行中的Spring Boot应用程序。Actuator提供在运行时检视应用程序内部情况的能力。安装了Actuator就能窥探应用程序的内部情况,包括如下细节:

  • Spring应用程序上下文里配置的Bean

  • Spring Boot的自动配置做的决策

  • 应用程序取到的环境变量、系统属性、配置属性和命令行参数

  • 应用程序里线程的当前状态

  • 应用程序最近处理过的HTTP请求的追踪情况

  • 各种和内存用量、垃圾回收、Web请求以及数据源用量相关的指标


创建Spring Boot 项目


1、使用 Spring Initializr 创建 Springboot 项目。


Spring Initializr有几种用法:

  • 通过Web界面使用。

  • 通过Spring Tool Suite使用。

  • 通过IntelliJ IDEA使用。

  • 使用Spring Boot CLI使用


本人常用的通过官网web界面创建和IDEA创建,这里介绍这种方式。


(1)、通过官网web界面创建


(a)、浏览器打开start.spring.io,如下图:


左侧根据你需要选择项目类型、编程语言、Springboot版本、打包方式、Java版本,输入项目信息,右侧还可以选择需要的依赖,下面有三个按钮GENERATE、EXPLORE、SHARE。点击GENERAE直接下载,点击EXPLORE弹出一个页面可以展示生成的代码,再点击download进行下载。SHARE可以复制创建springboot的路径。


(b)、将下载的压缩包解压到计算机中,这就是Springboot最基本的项目架构了。


(2)、IDEA创建Springboot项目


(a)、打开IDEA,依次点击File-->New-->project,出现如下界面:


红色方框里的地址是不是和上一种方式的地址一样?其实IDEA创建本质上也和上一样的,都是从这个网址创建,不过IDEA自动帮我们做了。


(b)、点击Next出现如下界面,也和上一种方式类似,输入项目信息,选择项目类型,Java版本,打包方式等。


(c)、继续点击Next出现如下界面,是不是也很熟悉,这里选择依赖、springboot版本。


(d)、继续点击Next出现如界面,输入项目名称,选择项目路径,点击Finish完成创建。


这两种方式是使用Spring Initializr 创建Springboot项目,Springboot也是一种Maven项目,还有一种就是创建Maven项目的方式进行创建。


2、Maven创建Springboot项目


先创建Maven项目再将Springboot特有的依赖加入到pom中


在包根目录下创建一个带@SpringBootApplication注解的main方法类。


自动配置


@SpringBootApplication注解的类在Spring Boot应用程序里有两个作用:配置和启动引导。@SpringBootApplication 开启了Spring的组件扫描和Spring Boot的自动配置功能。实际上, @SpringBootApplication 将三个有用的注解组合在了一起:

  • Spring的 @Configuration :标明该类使用Spring基于Java的配置。

  • Spring的 @ComponentScan :启用组件扫描,这样你写的Web控制器类和其他组件才能被自动发现并注册为Spring应用程序上下文里的Bean。

  • Spring Boot 的 @EnableAutoConfiguration : 这 个 不 起 眼 的 小 注 解 也 可 以 称 为@Abracadabra,就是这一行配置开启了Spring Boot自动配置的魔力,让你不用再写成篇的配置了。


Spring 4.0引入条件化配置,条件化配置允许配置存在于应用程序中,但在满足某些特定条件之前都忽略这个配置。Spring Boot运用条件化配置的方法是,定义多个特殊的条件化注解,并将它们用到配置类上。这些条件化配置类构成了Springboot的自动配置。


自动配置中使用的条件化注解:

  • @ConditionalOnBean     配置了某个特定Bean

  • @ConditionalOnMissingBean     没有配置特定的Bean

  • @ConditionalOnClass        Classpath里有指定的类

  • @ConditionalOnMissingClass      Classpath里缺少指定的类

  • @ConditionalOnExpression      给定的Spring Expression Language(SpEL)表达式计算结果为 true

  • @ConditionalOnJava         Java的版本匹配特定值或者一个范围值

  • @ConditionalOnJndi        参数中给定的JNDI位置必须存在一个,如果没有给参数,则要有JNDI  InitialContext

  • @ConditionalOnProperty       指定的配置属性要有一个明确的值

  • @ConditionalOnResource      Classpath里有指定的资源

  • @ConditionalOnWebApplication       这是一个Web应用程序

  • @ConditionalOnNotWebApplication    这不是一个Web应用程序


自定义配置


springboot可以使用两种影响自动配置的方式,使用显式配置进行覆盖和使用属性进行精细化配置。


覆盖 Spring Boot 自动配置


大多数情况下,自动配置的Bean刚好能满足你的需要,不需要去覆盖它们。但某些情况下,Spring Boot在自动配置时还不能很好地进行推断。我们可以在了解自动配置提供了什么之后,我们再来覆盖基础的安全配置,以满足特定的场景需求。


1、创建自定义的配置


覆盖自动配置很简单,就当自动配置不存在,直接显式地写一段配置。这段显式配置的形式不限,Spring支持的XML和Groovy形式配置都可以。Spring Boot会发现你的配置,随后降低自动配置的优先级,以你的配置为准。


2、通过属性文件外置配置


Spring Boot应用程序有多种设置途径。Spring Boot能从多种属性源获得属性,包括


如下几处。


(1) 命令行参数


(2)  java:comp/env 里的JNDI属性


(3) JVM系统属性


(4) 操作系统环境变量


(5) 随机生成的带 random.* 前缀的属性(在设置其他属性时,可以引用它们,比如 ${random.long} )


(6) 应用程序以外的application.properties或者appliaction.yml文件


(7) 打包在应用程序内的application.properties或者appliaction.yml文件


(8) 通过 @PropertySource 标注的属性源


(9) 默认属性


这个列表按照优先级排序,也就是说,任何在高优先级属性源里设置的属性都会覆盖低优先级的相同属性


application.properties和application.yml文件能放在以下四个位置。


(1) 外置,在相对于应用程序运行目录的/config子目录里。


(2) 外置,在应用程序运行的目录里。


(3) 内置,在config包内。


(4) 内置,在Classpath根目录。


这个列表按照优先级排序,高优先级位置的配置会覆盖低优先级位置的配置。


自动配置微调


springboot有300多个属性可以用来微调Spring Boot应用程序里的Bean。下面列举几个例子:


1、禁用模板缓存


spring.thymeleaf.cache(thymeleaf模板)


spring.freemarker.cache (Freemarker)


spring.groovy.template.cache (Groovy模板)


spring.velocity.cache (Velocity)


默认情况下,这些属性都为 true ,也就是开启缓存。将它们设置为 false 即可禁用缓存。


2、配置嵌入式服务器


springboot内置服务器(Tomcat),运行Spring Boot应用程序时,应用程序会启动一个嵌入式的服务器(默认是Tomcat),监听8080端口。


server.port(配置端口)


server.ssl.key-store(密钥存储文件的存放路径)


server.ssl.key-store-password和server.ssl.key-password(创建秘钥文件时给定的密码)


3、4配置日志


默认情况下,Spring Boot会用Logback来记录日志,并用 INFO 级别输出到控制台。如果决定使用Log4j或者Log4j2,那么你只需要修改依赖,引入对应该日志实现的起步依赖,同时排除掉Logback。在配置文件可以配置日志等级、路径等信息。


4、配置数据源


通过属性配置数据库的URL和身份信息就可以了。


5、使用 Profile 进行配置


当应用程序需要部署到不同的运行环境时,可以使用基于Profile的配置。Profile是一种条件化配置,基于运行时激活的Profile,会使用或者忽略不同的Bean或配置类。设置 spring.profiles.active 属性就能激活Profile,任意设置配置属性的方式都能用于设置这个值。


spring.profiles.active=production


为每个环境分别创建配置,使用特定于Profile的属性文件,如application-{profile}.properties,application-{profile}.yml。


6、定制应用程序错误页面


Spring Boot自动配置的默认错误处理器会查找名为error的视图,如果找不到就用默认的白标错误视图


最简单的方法就是创建一个自定义视图,让解析出的视图名为error。这一点归根到底取决于错误视图解析时的视图解析器。

  • 实现了Spring的View接口的Bean,其ID为error(由Spring的 BeanNameViewResolver所解析)。

  • 如果配置了Thymeleaf,则有名为error.html的Thymeleaf模板。

  • 如果配置了FreeMarker,则有名为error.ftl的FreeMarker模板。

  • 如果配置了Velocity,则有名为error.vm的Velocity模板。

  • 如果是用JSP视图,则有名为error.jsp的JSP模板。


错误页有两处特别的信息需要呈现:错误的请求路径和异常消息。默认情况下,Spring Boot会为错误视图提供如下错误属性。

  • timestamp :错误发生的时间。

  • status :HTTP状态码。

  • error :错误原因。

  • exception :异常的类名。

  • message :异常消息(如果这个错误是由异常引起的)。

  • errors : BindingResult 异常里的各种错误(如果这个错误是由异常引起的)。

  • trace :异常跟踪信息(如果这个错误是由异常引起的)。

  • path :错误发生时请求的URL路径。

你可能感兴趣的:(Springboot项目的创建和配置详细介绍)