SpringBoot核心

Easter79
• 阅读 392

1.基本配置

1.1入口类和@SrpingBootApplication

SpringBoot通常有一个名为*Application的入口类,入口类里有一个main方法,这个main方法就是一个标准的java应用的入口方法

。在main方法中使用SpringApplication.run,启动springboot项目。

SpringBoot核心

SpringBoot核心

其中@EnablieAutoConfiguration让springboot根据类路径中的jar包依赖为当前项目进行自动配置。例如,添加了spring-boot-starter

-web依赖,会自动添加tomcat和springMVC的依赖,那么springboot会对Tomcat和springMVC进行自动配置。又如,添加了

srping-boot-starter-data-jpa依赖,springboot会自动进行JPA的相关配置。

Springboot会自动扫描@SpringBootApplication所在类的同级包以及下级包里的Bean,建议入口类位置在groupId+arctifactID组合的包名i下。

1.2关闭特定的自动配置

关闭特定的自动配置应该使用@srpingBootApplication注解的exclude参数。

SpringBoot核心

1.3关闭banner

将main里的内容修改为

SpringBoot核心

1.4SpringBoot的配置文件

SpringBoot使用一个全局的配置文件application.properties。放置在src/main/resource目录或者类路径的/config下。

SpringBoot的全局配置文件的作用是对一些默认配置的配置进行一些修改。

将Tomcat的默认端口号8080修改为9090,并将默认访问路径“/”修改为“/helloboot”

SpringBoot核心

1.5starter pom

springBoot为我们提供了简化企业级开发绝大数场景的start pom,只要使用了应用场景所需要的start pom,相关的技术配置就会消除

就可以通过Springboot得到自动配置的Bean。

官方 starter pom

SpringBoot核心

SpringBoot核心

还有一些第三方的start pom。

1.6使用xml配置

springboot提倡零配置,即无xml配置,但在实际项目中,可能有一些特殊要求必须使用xml配置。可以通过Spring提供的@ImportResource

注解来加载xml配置。

SpringBoot核心

2.外部配置

2.1命令行参数配置

springboot可以是基于jar包运行的,打成jar包的程序可以直接通过如下命令运行

java -jar xx.jar

可以通过以下命令修改Tomcat端口号:

java -jar xx.jar --server.port=9090

2.2常用的属性配置

(1)application.properties增加属性

SpringBoot核心

SpringBoot核心

2.3类型安全的配置(基于properties)

上列中使用@value注入每个配置在实际项目中会显得格外麻烦,因为我们的配置通常会是很多个

springboot还提供了基于类型安全的配置通过@configurationProperties将properties属性和一个Bean及其属性关联。

SpringBoot核心

SpringBoot核心

SpringBoot核心

SpringBoot核心

3.日志配置

springboot支持java Util Logging,log4j,log4j2和logback作为日志框架。无论使用哪种日志框架,springBoot已经为当前使用日志框架

控制台输出和文件输出做好了配置。

默认情况下,springboot使用logback作为日志框架。

配置的日志级别为:

SpringBoot核心

4.Profile配置

SpringBoot核心

SpringBoot核心

目录结构

SpringBoot核心

SpringBoot核心

5. Springboot的运行原理

springboot关于自动配置的源码在spring-boot-autoconfigure中

SpringBoot核心

可以在这里查看源码

可以通过以下方式来产看当前项目汇总已启用或未启用的自动配置的报告。

在application.properies中设置属性:

debug=true

此时启动时可以在控制台中输出:

已启用的自动配置为:

SpringBoot核心

SpringBoot核心

5.1运行原理

关于springboot的运行原理,我们还是回归到@srpingBootApplication注解上来,这个注解是一个组合注解

它的核心功能是@EnableAutoConfiguration注解提供的。

下面我们来看下@EnableAutoConfiguration注解的源码:

SpringBoot核心

 这里的关键功能是@import注解导入的配置功能,EnableAutoConfiggurationImportSelect使用

SpringFactoriesLoader。loadFactoryNames方法来扫描具有META-INF/spring.factories文件的jar

包,而我们的spring-boot-autoconfigure-1.3.0.xjar里就一个spring.factories文件。在此文件里声明了有哪些

自动配置。

 SpringBoot核心

5.2核心注解

打开上面人一个一个AutoConfiguration文件,一般都有下面的条件注解

 SpringBoot核心

SpringBoot核心

SpringBoot核心

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Easter79 Easter79
2年前
SpringBoot学习(五)
SpringBoot的核心1、入口类和@SpringBootApplicationSpringBoot的项目一般都会有\Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法。而@SpringBootApplication注解是SpringBoot的核心
Stella981 Stella981
2年前
SpringBoot 核心配置
1\.入口类和@SpringBootApplication  SpringBoot的项目一般都会有\Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法。  @SpringBootApplication注解是SpringBoot的核心注解,它其实是一个组合注解:  !(https
Stella981 Stella981
2年前
SpringBoot学习(五)
SpringBoot的核心1、入口类和@SpringBootApplicationSpringBoot的项目一般都会有\Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法。而@SpringBootApplication注解是SpringBoot的核心
Stella981 Stella981
2年前
SpringBoot核心
1.基本配置1.1入口类和@SrpingBootApplicationSpringBoot通常有一个名为\Application的入口类,入口类里有一个main方法,这个main方法就是一个标准的java应用的入口方法。在main方法中使用SpringApplicatio
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k