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核心的更多相关文章

  1. 浅谈SpringBoot核心注解原理

    SpringBoot核心注解原理 今天跟大家来探讨下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot为什么不需要XML,达到零配置 ...

  2. SpringBoot(二) SpringBoot核心配置文件application.yml/properties

    我们都知道在Spring中有着application.xml文件对Spring进行相关配置,通过web.xml中的contextConfigLocation指定application.xml文件所在位 ...

  3. 这一次搞懂SpringBoot核心原理(自动配置、事件驱动、Condition)

    @ 目录 前言 正文 启动原理 事件驱动 自动配置原理 Condition注解原理 总结 前言 SpringBoot是Spring的包装,通过自动配置使得SpringBoot可以做到开箱即用,上手成本 ...

  4. 深入理解SpringBoot核心机制《spring-boot-starter》

    深入理解SpringBoot核心机制<spring-boot-starter> 前言: 对于这几年java火爆天的springBoot我相信大家都有所使用过,在springBoot的项目中 ...

  5. SpringBoot核心注解应用

    1.今日大纲 了解Spring的发展 掌握Spring的java配置方式 学习Spring Boot 使用Spring Boot来改造购物车系统 2.Spring的发展 Spring1.x 时代 在S ...

  6. SpringBoot 核心配置

    1. 入口类和 @SpringBootApplication Spring Boot的项目一般都会有*Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法 ...

  7. springboot深入学习(一)-----springboot核心、配置文件加载、日志配置

    一.@SpringBootApplication @SpringBootApplication是spring boot的核心注解,源码如下: 相当于:@Configuration+@EnableAut ...

  8. Springboot核心注解

    运行文中的代码需要在项目构建中引入springboot 相关依赖. ① @configuration configuration,用来将bean加入到ioc容器.代替传统xml中的bean配置.代码示 ...

  9. SpringBoot 源码解析 (一)----- SpringBoot核心原理入门

    Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for building all Sp ...

随机推荐

  1. stm32寄存器版学习笔记07 ADC

    STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把A ...

  2. ssh/scp免密码登录传输

    # 本地服务器生成key(直接回车默认) ssh-keygen # 将key传输到要登录的服务器 ssh-copy-id -i /root/.ssh/id_rsa.pub root@IP地址 # 输入 ...

  3. 携程 决赛 第一题 Crossword

    //真是郁闷的一晚上//比赛时看到这题是就感觉会做,感觉思路清晰 就去准备找第二题 ,因为感觉第二题是个经典问题,(我不会计算几何),就去搜索了下,然后找到求最小面积的,改来改去,一直Wa// 然后就 ...

  4. fpga rom 初始化mif文件生成

    mif文件的格式 width= depth= address_radix= data_radix= content begin 00:    ; 01:   ; 02:   ; .... end; 关 ...

  5. 【java基础】Java的retry标记的使用

    说明:其实retry就是一个标记,标记程序跳出循环的时候从哪里开始执行,功能类似于goto.retry一般都是跟随者for循环出现,第一个retry的下面一行就是for循环,而且第二个retry的前面 ...

  6. vs2013 + python3.52 + boost1.61, 编译C++库失败

    使用vs2013  + python3.52 + boost1.61,  编译C++库,  失败!  提示如下": boost::python::detail::init_module(st ...

  7. 异常Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4 from http://maven.aliyun.com/nexus/content/groups/public was ...

    错误异常:Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4 from http://maven ...

  8. Apache Accumulo

    Apache Accumulo 是一个可靠的.可伸缩的.高性能的排序分布式的 Key-Value 存储解决方案, 基于单元访问控制以及可定制的服务器端处理.Accumulo使用 Google BigT ...

  9. Vim使用YouCompleteMe达到类似IDE的代码提示、补全,以及其他实用设置

    接触Linux有两年了,vim还是只会简单的操作.最近实在受不了sublime的代码提示,决定花点时间来配置下vim.本文讲自己认为方便的vim配置,称不上完美,只讲究简单实用. 使用 ctags 主 ...

  10. 【原】C++11并行计算 — 数组求和

    本文转载请注明出处 -- polobymulberry-博客园 0x00 - 前言 最近想优化ORB-SLAM2,准备使用并行计算来提高其中ORB特征提取的速度.之前对并行计算方面一窍不通.借此机会, ...