文档章节

springboot 入门教程(3)-运行原理、关键注解和配置

pxk
 pxk
发布于 2017/09/10 16:59
字数 1565
阅读 405
收藏 6
点赞 0
评论 0

    springboot提倡约定优于配置的思想,所以提供了很多默认配置,所以大家才会发现搭建一个应用会非常简单,只需要简单几行代码就搞定一个组件的集成。

    那我们就来深入了解下他的原理和关键配置。

1、基本配置

    springboot基本都是通过一个入口类来启动应用,一般命名为Application,里面包含一个main方法,main方法中使用SpringApplication.run(Application.class, args)方法来启动应用。这个入口类一定要在类上加上一个注解:@SpringBootApplication,这个注解是一个组合注解,都是由哪些注解组合的请大家去看源码了没什么可介绍的。

@SpringBootApplication
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

}

    springboot支持两种配置文件:properties和yml,官方推荐使用yml(我个人习惯了properties),默认配置文件存放在src/mian/resources目录下,名称为:application.properties或application.yml

    这两个配置文件中能配置很多内容,包括springboot自己的和集成第三方时候的一些配置,但是这些配置全部都是有默认值的,只有需要修改的时候才需要去配置。现在就举几个大家可能会经常用到的

    a、springboot自带web容器的默认端口是8080,如果想修改只需要在上述配置文件中加入server.port=8081;

    b、项目根目录,springboot自带的容器启动后是默认不带项目名的,如果你想带上项目名那添加

         server.context-path=/taskCenter

    以上是在properties中的写法,在yml中应该是

server:
      port:8081
      contextPath:/taskCenter

    starter pom

    这里介绍下springboot最强大的功能,提供大部分企业开发绝大多数场景的starter pom ,也就是集成并默认配置好的第三方组件包,引入starter pom后,springboot就会自动使用默认配置帮我们配置好。

    官方提供了有好几十种,有的开源项目为了支持springboot也提供了starter pom ,详细的内容请移步Starter POMs详解,有详细介绍。      

2、日志配置

    springboot 支持logging、Log4j,Log4j2和Logback作为日志框架,默认使用的是Logback

    logging.file=d:/mylog/log.log

    logging.level.org.springframework.web=DEBUG

3、profile配置

    profile是针对不同环境对不同配置提供支持的,全局的Profile配置使用application-{profile}.properties

    通过在application.properties中设置spring.profiles.active=prod来指定活动的Profile。

4、运行原理

    关于运行原理我们还是从@SpringBootApplication注解开始说起,他是一个组合注解,到底组合了哪些呢?我们看下源码:(如果你用的老版本那源码可能不一样,旧的是使用import注解引入了一个EnableAutoConfigurationImportSelector.class的实现类进行自动配置的,新版本多了一个@EnableAutoConfiguration这个注解,其实@EnableAutoConfiguration注解中实现和旧版本一样也是用的import)

大家可以看到有一个@EnableAutoConfiguration注解,这个就是SpringBoot最强大的注解没有之一,是他帮我们完成了集成的所有默认配置。到底都支持哪些默认配置呢?

进入源码后我们可以看到源码所在的包是:spring-boot-autoconfigure-1.5.6.RELEASE.jar(版本号根据你实际使用的版本决定),这个包中定义了springboot官方支持的所有自动配置的源代码。展开看下就大概知道springboot可以帮我们自动配置哪些东西了。

就这么多,够用了吧,相信你大家进行web开发的时候常用的框架都在这里了,所以springboot就牛逼在这里,很多以前需要写很多配置文件才能搞定的,现在只需要引入包,修改几行配置就可以集成一个框架。是不是很牛逼啊。(关于注解如果大家不熟的话,请恶补下)

有了@EnableAutoConfiguration这个牛逼的注解,接下来我们看下springboot到底怎么实现自动配置的?

1、springboot怎么知道什么时候需要自动配置什么内容呢?其实就是我们在引入了什么样的starter,每引入一个starter,springboot会自动扫描到,然后引入默认配置。

2、从spring4.x引入了强大的条件注解,才有springboot的自动配置,springboot是利用条件注解判断什么时候选择注解中的什么内容。

    条件注解位于org.springframework.boot.autoconfigure.condition这个包下,具体每个注解的含义就不多做介绍了,大家可以去官方看下。

3、很多时候我们都需要修改默认配置,这个默认配置包括最简单的默认参数(前面已经讲过了)和java 配置。当我们需要改变默认配置的逻辑或是加载一些额外的内容,那么就需要我们进行单独的配置。springboot提倡java config,所以在我们的springboot工程里面一般都会有单独的一个目录专门用于修改默认配置或是新增默认配置。

大概流程就是这样了,接下来我们梳理下

    springboot通过@SpringApplication注解启动,启动后通过@EnableAutoConfiguration注解和我们引入到工程中的start进行识别(利用了条件注解),识别出哪些内容需要完成自动配置,配置完成以后启动spring容器。如果你想看看springboot给我们默认配置了哪些内容,你可以在启动的时候加上-debug参数,控制台中就会出现#Atuo Configure  下方的内容就是默认配置项。

   好了,运行的原理(准备期的说应该是流程,并不是什么理论概念)就介绍到这里,下一篇我们就重点讲下springboot中怎么使用spring、spring mvc、serlvlet、fillter这些web开发的内容。

 

    

© 著作权归作者所有

共有 人打赏支持
pxk

pxk

粉丝 82
博文 25
码字总数 24939
作品 0
成都
程序员
SpringBoot 2.0 系列006 --启动实战之注解使用

SpringBoot 2.0 系列006 --启动实战之注解使用 一些误区说明 网上很多教程默认使用SpringBootApplcation注解,且只用这个即可扫描启动类包下所有的bean。 而官方默认教程使用的是@EnableAuto...

路上有你0314 ⋅ 05/18 ⋅ 0

SpringBoot 入门实例

SpringBoot 是由 pivotal 提供的 Java 开发框架,伴随着 spring 4.0 版本一起发布,旨在简化 Spring 项目的初始化及开发过程,框架本身为开发过程提供了大量的默认配置,当然我们也可以通过简...

Aotian ⋅ 05/29 ⋅ 0

关于springboot正常启动,路由却无法正常访问的问题

pom的配置, 12345 12342.helloApplication.java @SpringBootApplication@Configuration@Controllerpublic class helloApplication { }12345678910111213141516171819202122233.运行结果这里......

方宏春 ⋅ 04/14 ⋅ 0

springboot + shiro 权限注解、请求乱码解决、统一异常处理

springboot + shiro 权限注解、请求乱码解决、统一异常处理 前篇 后台权限管理系统 相关: spring boot + mybatis + layui + shiro后台权限管理系统 springboot + shiro之登录人数限制、登录...

wyait ⋅ 06/06 ⋅ 0

Spring Boot干货系列: (三)启动原理解析

     前言   前面几章我们见识了SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏。所以这次博主就跟你们一起一步步...

后端编程嘟 ⋅ 2017/03/13 ⋅ 0

SpringBoot 2.0 系列005 --启动实战之SpringApplication应用

SpringBoot 2.0 系列005 --启动实战之SpringApplication应用 2.X 官方示例 注意是只使用了@EnableAutoConfiguration,默认是只扫描这一个我们自定义的类到bean中。不含子包和本包。下一篇我们...

路上有你0314 ⋅ 05/17 ⋅ 0

SpringBoot 2.0 系列001 -- 入门介绍以及相关概念

SpringBoot 2.0 系列001 -- 入门介绍以及相关概念 什么是SpringBoot? 项目地址:http://projects.spring.io/spring-boot/ SpringBoot介绍 Spring Boot使开发独立的,产品级别的基于Spring的...

路上有你0314 ⋅ 05/10 ⋅ 0

SpringBoot与缓存使用及原理(上)

下面我就开始介绍springboot中的缓存: 首先了解下JSR107、Spring缓存抽象等等概念。 一 JSR107(下面会有具体Springboot代码演示) Java Caching定义了5个核心接口,分别是CachingProvider...

刘信坚 ⋅ 06/14 ⋅ 0

SpringBoot2.x整合MyBatis

首先在IDEA中创建一个SpringBoot工程: 选择一些基本的包: 完成创建: 工程创建成功后,补充pom.xml文件中的依赖,完整的依赖如下: 编辑配置文件完成后,打开SpringBoot的启动类,加上@Ma...

ZeroOne01 ⋅ 06/12 ⋅ 0

Spring Boot的@Service和@Autowired和@ComponentScan注解

Spring Boot的@Service和@Autowired和@ComponentScan注解 SpringBoot项目的Bean装配默认规则是根据Application类(SpringBoot项目入口类)所在的包位置从上往下扫描,即只扫描该类所在的包及...

蓝色老鼠 ⋅ 06/01 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 40分钟前 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部