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

    springboot提倡约定优于配置的思想,因此提供了不少默认配置,因此你们才会发现搭建一个应用会很是简单,只须要简单几行代码就搞定一个组件的集成。java

    那咱们就来深刻了解下他的原理和关键配置。web

一、基本配置

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

@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.ymlspringboot

    这两个配置文件中能配置不少内容,包括springboot本身的和集成第三方时候的一些配置,可是这些配置所有都是有默认值的,只有须要修改的时候才须要去配置。如今就举几个你们可能会常常用到的mvc

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

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

         server.context-path=/taskCenterspring-boot

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

server:
      port:8081
      contextPath:/taskCenter

    starter pom.net

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

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

二、日志配置

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

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

    logging.level.org.springframework.web=DEBUG

三、profile配置

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

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

四、运行原理

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

你们能够看到有一个@EnableAutoConfiguration注解,这个就是SpringBoot最强大的注解没有之一,是他帮咱们完成了集成的全部默认配置。到底都支持哪些默认配置呢?

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

就这么多,够用了吧,相信你你们进行web开发的时候经常使用的框架都在这里了,因此springboot就牛逼在这里,不少之前须要写不少配置文件才能搞定的,如今只须要引入包,修改几行配置就能够集成一个框架。是否是很牛逼啊。(关于注解若是你们不熟的话,请恶补下)

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

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

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

    条件注解位于org.springframework.boot.autoconfigure.condition这个包下,具体每一个注解的含义就很少作介绍了,你们能够去官方看下。

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

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

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

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

相关文章
相关标签/搜索