SpringBoot核心
1.基本配置
1.1入口类和@SrpingBootApplication
SpringBoot通常有一个名为*Application的入口类,入口类里有一个main方法,这个main方法就是一个标准的java应用的入口方法
。在main方法中使用SpringApplication.run,启动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参数。
1.3关闭banner
将main里的内容修改为
1.4SpringBoot的配置文件
SpringBoot使用一个全局的配置文件application.properties。放置在src/main/resource目录或者类路径的/config下。
SpringBoot的全局配置文件的作用是对一些默认配置的配置进行一些修改。
将Tomcat的默认端口号8080修改为9090,并将默认访问路径“/”修改为“/helloboot”
1.5starter pom
springBoot为我们提供了简化企业级开发绝大数场景的start pom,只要使用了应用场景所需要的start pom,相关的技术配置就会消除
就可以通过Springboot得到自动配置的Bean。
官方 starter pom
还有一些第三方的start pom。
1.6使用xml配置
springboot提倡零配置,即无xml配置,但在实际项目中,可能有一些特殊要求必须使用xml配置。可以通过Spring提供的@ImportResource
注解来加载xml配置。
2.外部配置
2.1命令行参数配置
springboot可以是基于jar包运行的,打成jar包的程序可以直接通过如下命令运行 java -jar xx.jar 可以通过以下命令修改Tomcat端口号: java -jar xx.jar --server.port=9090
2.2常用的属性配置
(1)application.properties增加属性
2.3类型安全的配置(基于properties)
上列中使用@value注入每个配置在实际项目中会显得格外麻烦,因为我们的配置通常会是很多个
springboot还提供了基于类型安全的配置通过@configurationProperties将properties属性和一个Bean及其属性关联。
3.日志配置
springboot支持java Util Logging,log4j,log4j2和logback作为日志框架。无论使用哪种日志框架,springBoot已经为当前使用日志框架
控制台输出和文件输出做好了配置。
默认情况下,springboot使用logback作为日志框架。
配置的日志级别为:
4.Profile配置
目录结构
5. Springboot的运行原理
springboot关于自动配置的源码在spring-boot-autoconfigure中
可以在这里查看源码
可以通过以下方式来产看当前项目汇总已启用或未启用的自动配置的报告。
在application.properies中设置属性:
debug=true
此时启动时可以在控制台中输出:
已启用的自动配置为:
5.1运行原理
关于springboot的运行原理,我们还是回归到@srpingBootApplication注解上来,这个注解是一个组合注解
它的核心功能是@EnableAutoConfiguration注解提供的。
下面我们来看下@EnableAutoConfiguration注解的源码:
这里的关键功能是@import注解导入的配置功能,EnableAutoConfiggurationImportSelect使用
SpringFactoriesLoader。loadFactoryNames方法来扫描具有META-INF/spring.factories文件的jar
包,而我们的spring-boot-autoconfigure-1.3.0.xjar里就一个spring.factories文件。在此文件里声明了有哪些
自动配置。
5.2核心注解
打开上面人一个一个AutoConfiguration文件,一般都有下面的条件注解
SpringBoot核心的更多相关文章
- 浅谈SpringBoot核心注解原理
SpringBoot核心注解原理 今天跟大家来探讨下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot为什么不需要XML,达到零配置 ...
- SpringBoot(二) SpringBoot核心配置文件application.yml/properties
我们都知道在Spring中有着application.xml文件对Spring进行相关配置,通过web.xml中的contextConfigLocation指定application.xml文件所在位 ...
- 这一次搞懂SpringBoot核心原理(自动配置、事件驱动、Condition)
@ 目录 前言 正文 启动原理 事件驱动 自动配置原理 Condition注解原理 总结 前言 SpringBoot是Spring的包装,通过自动配置使得SpringBoot可以做到开箱即用,上手成本 ...
- 深入理解SpringBoot核心机制《spring-boot-starter》
深入理解SpringBoot核心机制<spring-boot-starter> 前言: 对于这几年java火爆天的springBoot我相信大家都有所使用过,在springBoot的项目中 ...
- SpringBoot核心注解应用
1.今日大纲 了解Spring的发展 掌握Spring的java配置方式 学习Spring Boot 使用Spring Boot来改造购物车系统 2.Spring的发展 Spring1.x 时代 在S ...
- SpringBoot 核心配置
1. 入口类和 @SpringBootApplication Spring Boot的项目一般都会有*Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法 ...
- springboot深入学习(一)-----springboot核心、配置文件加载、日志配置
一.@SpringBootApplication @SpringBootApplication是spring boot的核心注解,源码如下: 相当于:@Configuration+@EnableAut ...
- Springboot核心注解
运行文中的代码需要在项目构建中引入springboot 相关依赖. ① @configuration configuration,用来将bean加入到ioc容器.代替传统xml中的bean配置.代码示 ...
- SpringBoot 源码解析 (一)----- SpringBoot核心原理入门
Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for building all Sp ...
随机推荐
- 关于HTTPS理论和实践
Summary: HTTP 通信时,可能信息被监听.服务器或客户端身份伪装等安全问题,HTTPS 则能有效解决这些问题. 原始的HTTP连接的时候,因服务器与用户之间是直接进行明文传输,导致用户面临着 ...
- Git详解之五 分布式Git
以下内容转载自:http://www.open-open.com/lib/view/open1328070090108.html 分布式 Git 为了便于项目中的所有开发者分享代码,我们准备好了一台服 ...
- freeradius连接mysql数据库慢
[环境说明] 服务器版本 redHat5.3 mysql版本 MySQL5.6.22 freeradius版本 2.1.12 [问题描述] 配置好freeradiu ...
- ueditor编辑器【实际项目使用】
[页面效果] [代码] 说明: ueditor插件的公共代码: 如果是一个可以放在对应模块的js代码中 如果有多个就要提到全局的高度(即提到公共部分) <script type=" ...
- 日志组件logback的介绍及配置使用方法(二)
四.Logback的默认配置 如果配置文件 logback-test.xml 和 logback.xml 都不存在,那么 logback 默认地会调用BasicConfigurator ,创建一个最小 ...
- U盘格式和对齐扇数(常识)
一.文件系统常见的四种格式:FAT16.FAT32.NTFS.ExFAT. 虽然四种文件系统的存储方式和特性各不相同,但对于传输速度并不快的存储卡和U盘来说, 实际传输性能却大同小异,理论测试数据相差 ...
- c# 图片转流 流转文件
//----引入必要的命名空间 using System.IO; using System.Drawing.Imaging; //----代码部分----// private byte[] photo ...
- VSCode插件开发
VSCode插件开发全攻略(十)打包.发布.升级 发布方式 插件开发完了,如何发布出去分享给他人呢?主要有3种方法: 方法一:直接把文件夹发给别人,让别人找到vscode的插件存放目录并放进去,然后重 ...
- 关于gradle加快构建速度采用阿里云中央仓库的配置
近期开始了一段新的开始,在一家在线教育的公司开始下一阶段的工作,鉴于之前的面试中问到了spring的内容基本快要到源码层面的问题了,想要把spring的源码导到idea中,结果出现了下载极慢的问题,如 ...
- 《DSP using MATLAB》示例Example7.25
今天清明放假的第二天,早晨出去吃饭时天气有些阴,十点多开始“清明时节雨纷纷”了. 母亲远在他乡看孙子,挺劳累的.父亲照顾生病的爷爷…… 我打算今天把<DSP using MATLAB>第7 ...