前面我们编写了一个springboot,通过这个helloworld我们发现,Springboot确实简单,他只需要写一个主程序,来启动Springboot的应用,接下来我们就按照我们的业务逻辑,编写一些Controller,service,我们根本不需要做任何配置,那为什么会有这么神奇的一个现象呢,我们从pom文件来分析一下,我们先来说他的pom文件,在这个pom文件里面呢,就是导入了相关依赖,这些依赖导入了这么多jar包,首先这里有一个parent,<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.12.RELEASE</version><relativePath/>
</parent>我们导入了一个父项目,boot-starter-parent,Sprintboot所有starter的父项目,父项目有什么用呢,我们依赖是用来做依赖管理,那我们来看一下我们的父项目,我们发现这个父项目他还依赖一个父项目,<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>1.5.12.RELEASE</version><relativePath>../../spring-boot-dependencies</relativePath>
</parent>那么这有什么用呢,再来点进去看一下,这里有一个properties,属性里面有一个Dependency versions,定义了每一个依赖的版本,比如activemq的依赖,包括做切面的aspect的版本号,commons的依赖,都为我们做了依赖管理<properties><!-- Dependency versions --><activemq.version>5.14.5</activemq.version><antlr2.version>2.7.7</antlr2.version><appengine-sdk.version>1.9.63</appengine-sdk.version><artemis.version>1.5.6</artemis.version><aspectj.version>1.8.13</aspectj.version><assertj.version>2.6.0</assertj.version><atomikos.version>3.9.3</atomikos.version><bitronix.version>2.1.4</bitronix.version><caffeine.version>2.3.5</caffeine.version><cassandra-driver.version>3.1.4</cassandra-driver.version><classmate.version>1.3.4</classmate.version><commons-beanutils.version>1.9.3</commons-beanutils.version><commons-collections.version>3.2.2</commons-collections.version><commons-codec.version>1.10</commons-codec.version><commons-dbcp.version>1.4</commons-dbcp.version><commons-dbcp2.version>2.1.1</commons-dbcp2.version><commons-digester.version>2.1</commons-digester.version><commons-pool.version>1.6</commons-pool.version><commons-pool2.version>2.4.3</commons-pool2.version><couchbase-client.version>2.3.7</couchbase-client.version><couchbase-cache-client.version>2.1.0</couchbase-cache-client.version><crashub.version>1.3.2</crashub.version><derby.version>10.13.1.1</derby.version><dom4j.version>1.6.1</dom4j.version><dropwizard-metrics.version>3.1.5</dropwizard-metrics.version><ehcache.version>2.10.4</ehcache.version><ehcache3.version>3.2.3</ehcache3.version><embedded-mongo.version>1.50.5</embedded-mongo.version><flyway.version>3.2.1</flyway.version><freemarker.version>2.3.28</freemarker.version><elasticsearch.version>2.4.6</elasticsearch.version><gemfire.version>8.2.9</gemfire.version><glassfish-el.version>3.0.0</glassfish-el.version><gradle.version>2.9</gradle.version><groovy.version>2.4.15</groovy.version><gson.version>2.8.2</gson.version><h2.version>1.4.197</h2.version><hamcrest.version>1.3</hamcrest.version><hazelcast.version>3.7.8</hazelcast.version><hazelcast-hibernate4.version>3.7.1</hazelcast-hibernate4.version><hazelcast-hibernate5.version>1.1.3</hazelcast-hibernate5.version><hibernate.version>5.0.12.Final</hibernate.version><hibernate-validator.version>5.3.6.Final</hibernate-validator.version><hikaricp.version>2.5.1</hikaricp.version><hikaricp-java6.version>2.3.13</hikaricp-java6.version><hikaricp-java7.version>2.4.13</hikaricp-java7.version><hsqldb.version>2.3.5</hsqldb.version><htmlunit.version>2.21</htmlunit.version><httpasyncclient.version>4.1.3</httpasyncclient.version><httpclient.version>4.5.5</httpclient.version><httpcore.version>4.4.9</httpcore.version><infinispan.version>8.2.10.Final</infinispan.version><jackson.version>2.8.11.20180217</jackson.version><janino.version>2.7.8</janino.version><javassist.version>3.21.0-GA</javassist.version> <!-- Same as Hibernate --><javax-cache.version>1.0.0</javax-cache.version><javax-mail.version>1.5.6</javax-mail.version><javax-transaction.version>1.2</javax-transaction.version><javax-validation.version>1.1.0.Final</javax-validation.version><jaxen.version>1.1.6</jaxen.version><jaybird.version>2.2.14</jaybird.version><jboss-logging.version>3.3.2.Final</jboss-logging.version><jboss-transaction-spi.version>7.6.0.Final</jboss-transaction-spi.version><jdom2.version>2.0.6</jdom2.version><jedis.version>2.9.0</jedis.version><jersey.version>2.25.1</jersey.version><jest.version>2.0.4</jest.version><jetty.version>9.4.9.v20180320</jetty.version><jetty-jsp.version>2.2.0.v201112011158</jetty-jsp.version><jetty-el.version>8.0.33</jetty-el.version><jms-api.version>1.1-rev-1</jms-api.version><jmustache.version>1.13</jmustache.version><jna.version>4.2.2</jna.version><joda-time.version>2.9.9</joda-time.version><jolokia.version>1.3.7</jolokia.version><jooq.version>3.9.6</jooq.version><json.version>20140107</json.version><jsonassert.version>1.4.0</jsonassert.version><json-path.version>2.2.0</json-path.version><jstl.version>1.2</jstl.version><jtds.version>1.3.1</jtds.version><junit.version>4.12</junit.version><liquibase.version>3.5.5</liquibase.version><log4j2.version>2.7</log4j2.version><logback.version>1.1.11</logback.version><lombok.version>1.16.20</lombok.version><mariadb.version>1.5.9</mariadb.version><mssql-jdbc.version>6.1.0.jre7</mssql-jdbc.version><mockito.version>1.10.19</mockito.version><mongodb.version>3.4.3</mongodb.version><mysql.version>5.1.46</mysql.version><narayana.version>5.5.31.Final</narayana.version><nekohtml.version>1.9.22</nekohtml.version><neo4j-ogm.version>2.1.6</neo4j-ogm.version><postgresql.version>9.4.1212.jre7</postgresql.version><querydsl.version>4.1.4</querydsl.version><reactor.version>2.0.8.RELEASE</reactor.version><reactor-spring.version>2.0.7.RELEASE</reactor-spring.version><selenium.version>2.53.1</selenium.version><selenium-htmlunit.version>2.21</selenium-htmlunit.version><sendgrid.version>2.2.2</sendgrid.version><servlet-api.version>3.1.0</servlet-api.version><simple-json.version>1.1.1</simple-json.version><slf4j.version>1.7.25</slf4j.version><snakeyaml.version>1.17</snakeyaml.version><solr.version>5.5.5</solr.version><spock.version>1.0-groovy-2.4</spock.version><spring.version>4.3.16.RELEASE</spring.version><spring-amqp.version>1.7.7.RELEASE</spring-amqp.version><spring-cloud-connectors.version>1.2.5.RELEASE</spring-cloud-connectors.version><spring-batch.version>3.0.9.RELEASE</spring-batch.version><spring-data-releasetrain.version>Ingalls-SR11</spring-data-releasetrain.version><spring-hateoas.version>0.23.0.RELEASE</spring-hateoas.version><spring-integration.version>4.3.15.RELEASE</spring-integration.version><spring-integration-java-dsl.version>1.2.3.RELEASE</spring-integration-java-dsl.version><spring-kafka.version>1.1.8.RELEASE</spring-kafka.version><spring-ldap.version>2.3.2.RELEASE</spring-ldap.version><spring-loaded.version>1.2.8.RELEASE</spring-loaded.version><spring-mobile.version>1.1.5.RELEASE</spring-mobile.version><spring-plugin.version>1.2.0.RELEASE</spring-plugin.version><spring-restdocs.version>1.1.3.RELEASE</spring-restdocs.version><spring-retry.version>1.2.2.RELEASE</spring-retry.version><spring-security.version>4.2.5.RELEASE</spring-security.version><spring-security-jwt.version>1.0.9.RELEASE</spring-security-jwt.version><spring-security-oauth.version>2.0.14.RELEASE</spring-security-oauth.version><spring-session.version>1.3.2.RELEASE</spring-session.version><spring-social.version>1.1.6.RELEASE</spring-social.version><spring-social-facebook.version>2.0.3.RELEASE</spring-social-facebook.version><spring-social-linkedin.version>1.0.2.RELEASE</spring-social-linkedin.version><spring-social-twitter.version>1.1.2.RELEASE</spring-social-twitter.version><spring-ws.version>2.4.2.RELEASE</spring-ws.version><sqlite-jdbc.version>3.15.1</sqlite-jdbc.version><statsd-client.version>3.1.0</statsd-client.version><sun-mail.version>${javax-mail.version}</sun-mail.version><thymeleaf.version>2.1.6.RELEASE</thymeleaf.version><thymeleaf-extras-springsecurity4.version>2.1.3.RELEASE</thymeleaf-extras-springsecurity4.version><thymeleaf-extras-conditionalcomments.version>2.1.2.RELEASE</thymeleaf-extras-conditionalcomments.version><thymeleaf-layout-dialect.version>1.4.0</thymeleaf-layout-dialect.version><thymeleaf-extras-data-attribute.version>1.3</thymeleaf-extras-data-attribute.version><thymeleaf-extras-java8time.version>2.1.0.RELEASE</thymeleaf-extras-java8time.version><tomcat.version>8.5.29</tomcat.version><undertow.version>1.4.23.Final</undertow.version><unboundid-ldapsdk.version>3.2.1</unboundid-ldapsdk.version><webjars-hal-browser.version>9f96c74</webjars-hal-browser.version><webjars-locator.version>0.32-1</webjars-locator.version><wsdl4j.version>1.6.3</wsdl4j.version><xml-apis.version>1.4.01</xml-apis.version><!-- Plugin versions --><build-helper-maven-plugin.version>1.10</build-helper-maven-plugin.version><exec-maven-plugin.version>1.5.0</exec-maven-plugin.version><git-commit-id-plugin.version>2.2.3</git-commit-id-plugin.version><maven-antrun-plugin.version>1.8</maven-antrun-plugin.version><maven-assembly-plugin.version>2.6</maven-assembly-plugin.version><maven-clean-plugin.version>2.6.1</maven-clean-plugin.version><maven-compiler-plugin.version>3.1</maven-compiler-plugin.version><maven-dependency-plugin.version>2.10</maven-dependency-plugin.version><maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version><maven-eclipse-plugin.version>2.10</maven-eclipse-plugin.version><maven-enforcer-plugin.version>1.4</maven-enforcer-plugin.version><maven-failsafe-plugin.version>2.18.1</maven-failsafe-plugin.version><maven-install-plugin.version>2.5.2</maven-install-plugin.version><maven-invoker-plugin.version>1.10</maven-invoker-plugin.version><maven-help-plugin.version>2.2</maven-help-plugin.version><maven-jar-plugin.version>2.6</maven-jar-plugin.version><maven-javadoc-plugin.version>2.10.4</maven-javadoc-plugin.version><maven-resources-plugin.version>2.7</maven-resources-plugin.version><maven-shade-plugin.version>2.4.3</maven-shade-plugin.version><maven-site-plugin.version>3.5.1</maven-site-plugin.version><maven-source-plugin.version>2.4</maven-source-plugin.version><maven-surefire-plugin.version>2.18.1</maven-surefire-plugin.version><maven-war-plugin.version>2.6</maven-war-plugin.version><versions-maven-plugin.version>2.2</versions-maven-plugin.version>
</properties>它是来真正管理Spring Boot应用里面的所有依赖版本,他来管理所有的这些依赖,也可以称为Springboot的版本仲裁中心,有了他以后,以后导入我们依赖,默认是不需要写版本的,MYSQL驱动默认是不需要写版本的,所有的版本依赖都在dependecy里面,没有在dependency管理的,我们自然要来写版本,需要声明版本号,这个是第一个版本仲裁
接下来我们来看第二个,父项目只是作为一个版本仲裁,那么jar包是有谁导进来的呢,我们在我们的项目里边,除了依赖这个父项目以外,这里还有一个stater-web,导入了一个依赖,<dependencies><dependency><!-- 引入web模块 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>我们导入了这个依赖,这个依赖也没有写版本号,因为SprintBoot帮我们自动仲裁,然后他的名叫做spring-boot-starter-web,我们把它拆成两个词,一个是sprint-boot-starter,一个是web,我为什么要这么拆呢,大家来看,以前的父项目叫做spring-boot-starter,的parent,Spring-boot-starter的父项目,而我们这里是spring-boot-starter的web,而什么叫做spring-boot-starter呢,我们称为spring-boot的场景启动器,那他的作用是什么,不妨进入我们的spring-boot-starter-web,他这里有声明一些依赖导入,他依赖spring-boot-starter基础项目,也依赖spring-boot-starter-tomcat,<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><version>1.5.12.RELEASE</version>
</dependency>还有hibernate-validator,<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>${hibernate-validator.version}</version>
</dependency>我们来做数据校验的,只是jackson,<dependency><groupId>com.fasterxml.jackson</groupId><artifactId>jackson-bom</artifactId><version>${jackson.version}</version><scope>import</scope><type>pom</type>
</dependency>springmvc两个jar包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>1.5.12.RELEASE</version>
</dependency>帮我们导入了web模块正常运行所依赖的组件,场景启动器当我们使用web模块的时候,他来帮我们导入相关的web模块,依赖的版本通过父项目进行仲裁,而在Springboot里面,还有更多的类似启动器,我们可以参考springboot的官方文档,https://docs.spring.io/spring-boot/docs/1.5.22.RELEASE/reference/html/using-boot-build-systems.html
#using-boot-starter搜一下StartersStarters are a set of convenient dependency descriptors that you can include in your application.我们就会有相应的依赖了,spring-boot将所有的功能,都抽取出来了一个个场景,比如我们要用activemq,那么就有activemq的启动器,如果要用amqp高级消息队列,就有这个启动器,如果要做aop功能,我们就导入这个启动器,比如我们要做数据jpa访问,spring-boot-starter-activemqspring-boot-starter-amqpspring-boot-starter-aopspring-boot-starter-data-jpa如果左数据访问的redis模块,spring-boot-starter-data-redis导入这个,如果我们要进行邮件开发,我们就导入这个spring-boot-starter-mail如果我们要进行web开发,我们导入这个spring-boot-starter-webSprintboot将所有的功能场景,都抽取出来,然后做成一个个的starters,称之为启动器,我们只需要在项目里面,引入这些starter,相关场景的所有依赖,都会导入进来,而且版本由springboot进行自动控制,我们要用某一个功能,就导什么场景,我们就不交依赖了,就叫启动器,有了他以后呢,我们每一种场景,sprintboot都帮我们考虑到,不需要导入这个启动器,应用就走起来了,你点过来就有pom文件来描述

比如我们来看邮件开发场景,他就会来描述,https://github.com/spring-projects/spring-boot/blob/v1.5.22.RELEASE/spring-boot-starters/
spring-boot-starter-mail/pom.xml<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId></dependency><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId></dependency>
</dependencies>会导入spring-boot-starter,还会导Spring环境,还有环境支持,还有javax.mail做邮件开发,大家都可以来参考文档,springboot有多少种场景,全部都在这,未来就是围绕着他来编写
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starters</artifactId><version>1.5.22.RELEASE</version></parent><artifactId>spring-boot-starter-mail</artifactId><name>Spring Boot Mail Starter</name><description>Starter for using Java Mail and Spring Framework's email sendingsupport</description><url>https://projects.spring.io/spring-boot/</url><organization><name>Pivotal Software, Inc.</name><url>https://www.spring.io</url></organization><properties><main.basedir>${basedir}/../..</main.basedir></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId></dependency><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId></dependency></dependencies>
</project>

SpringBoot_入门-HelloWorld细节-场景启动器(starter)相关推荐

  1. SpringBoot_入门-HelloWorld细节-自动配置

    前面分析了pom文件的父依赖,以及starter场景启动器,下面说一下helloworld主程序,这个主程序我们只要运行main方法就行了,但是运行main方法要注意,我们spring应用run的时候 ...

  2. 关于SpringBoot场景启动器

    本文来说下关于SpringBoot场景启动器 文章目录 SpringBoot的starter简介 SpringBoot场景启动器的原理 自动配置原理 自动配置类的获取与注入 自动配置的过程 Sprin ...

  3. SpringBoot场景启动器(starter)原理及实践

    文章目录 一.SpringBoot的starter简介 1.1 什么是starter(场景启动器) 二.SpringBoot场景启动器的原理 2.1 自动配置原理 2.1.1 自动配置类的获取与注入 ...

  4. Spring Boot场景启动器(Starter)

    如下的项目: 目录结构如下: 看porn.xml: <parent><groupId>org.springframework.boot</groupId><a ...

  5. SpringBoot中starter场景启动器

    1.starter的作用 starter一句话来描述就是开发中我们引入了相关场景的starter,这个场景中所有的相关依赖都引入进来了,比如我们做web开发引入了: <!--web插件--> ...

  6. 【无标题】starter场景启动器

    (1)见到很多 spring-boot-starter-* : *就某种场景\n\nspring-boot-starter-web:帮我们导入了web模块正常运行所依赖的组件.\n\n\u003Cde ...

  7. SpringBoot基础篇(二):HelloWorld细节探究

    1.场景启动器 1.1依赖 <!--Hello World项目的父工程是org.springframework.boot--><parent><groupId>or ...

  8. SpringBoot应用场景启动器

    SpringBoot主程序类,主入口 项目目录结构 下面的图中展示了上一篇博客中创建的入门程序,从这里我们开始了解关于SpringBoot程序启动原理 我们知道在Java中,每一个Java应用程序都有 ...

  9. SpringMVC入门案例细节分析

    1.流程 1).导包 2).写配置: 1)web.xml可能要写什么 配置springmvc的前端控制器,指定springmvc配置文件位置 <!-- The front controller ...

最新文章

  1. CISCO HSRP
  2. 又是读了多个文件没关闭,搞死了一晚
  3. C# String部分方法的例子StringBuilder的简单介绍
  4. 谈谈java的BlockingQueue
  5. WindowsServer2012史记5-简洁,管理更多的服务器
  6. linux去掉u盘写保护,最全面win10系统下u盘写保护怎么去掉
  7. android gone动画_Android动画之淡入淡出
  8. LeetCode 126 单词接龙 II
  9. Spring使用ComponentScan扫描Maven多模块工程的其它模块
  10. vue 可用于交互的表格
  11. 马蜂窝视频编辑框架设计及在 iOS 端的业务实践
  12. 三维点云预处理之点云去噪
  13. linux 硬盘开启apm,硬盘 APM 设置
  14. android 屏蔽系统输入法自定义输入法的详解
  15. Vue2 + ant design vue1.7.8版本 Table组件 手动拖拽、可伸缩列功能
  16. 图片扫描文字识别工具:text scanner mac中文版
  17. linux文件夹加密忘记密码,如何通过密码保护Linux上的文件夹或目录?
  18. 查词app android教程,英语查单词app哪个好_查单词app推荐_专门查单词的app
  19. JAVA高级---(2)15分钟入门JVM底层原理
  20. Kyligence 春季论坛成功举办,助力企业构建数字化管理新体系

热门文章

  1. JavaScript数据类型和变量学习小记
  2. 逻辑智力题【更新中】
  3. web每隔几秒页面刷新
  4. 28句话让你的人际关系更上一层楼
  5. 【Apache POI】Java写入Excel文件
  6. 【译】ES2018 新特性: 正则表达式的 s (dotAll) 标志
  7. linux中创建gpio节点
  8. 用PHP实现单向链表
  9. 专家谈家教中的心理健康教育
  10. java视频教程不同阶段看哪些