用html做登录网站,wordpress分类目录去页眉,科技部网站方案,乐天seo培训中心前言
如果SSM学的比较好#xff0c;那么SpringBoot说白了就两件事:约定大于配置和自动装配
SpringBoot不会提供任何的功能拓展#xff0c;完全依赖我们手动添加
所以SpringBoot的本质是一个依赖脚手架#xff0c;可以快速集成配置各种依赖
1.1 SpringBoot相关依赖
创建…前言
如果SSM学的比较好那么SpringBoot说白了就两件事:约定大于配置和自动装配
SpringBoot不会提供任何的功能拓展完全依赖我们手动添加
所以SpringBoot的本质是一个依赖脚手架可以快速集成配置各种依赖
1.1 SpringBoot相关依赖
创建maven项目引入spring‐boot‐starter‐parent和spring‐boot‐starter‐web两个依赖
parent
groupIdorg.springframework.boot/groupId
artifactIdspring‐boot‐starter‐parent/artifactId
version1.5.9.RELEASE/version
/parent
dependencies
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring‐boot‐starter‐web/artifactId
/dependency
/dependencies
这两个是最核心的依赖其他的都是锦上添花
1.2 创建SpringBoor启动类项目名Application.java
/**
* SpringBootApplication 来标注一个主程序类说明这是一个Spring Boot应用
* SpringBoot项目从此类的main方法启动
*/
SpringBootApplication
public class HelloWorldMainApplication {public static void main(String[] args) {// Spring应用启动起来SpringApplication.run(HelloWorldMainApplication.class,args);}
}
1.3 编写Controller并访问
Controller
public class HelloController {ResponseBodyRequestMapping(/hello)public String hello(){return Hello World!;}
} 我这里是改了端口默认是8080
1.4 部署SpringBoot项目 !--这个插件可以将应用打包成一个可执行的jar包--buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdexecutionsexecutiongoalsgoalrepackage/goal/goals/execution/executions/plugin/plugins/build
repackage是此插件的5个goal之一而且是默认的goal。
在mvn package之后再次打包可执行的jar/war同时保留mvn package生成的jar/war为.origin重新打包存在的jar或者war包从而使他们可以在命令行使用jar -jar来执行使用layoutNONE也可以简单的打包有嵌套依赖的jar(没有主类所以无法执行)它可以替代常规的构件或者连接到构建生命周期并有独立的分级。
现在我们来试一试
运行package命令
找到target目录下查看package成功后的jar包
使用windows的命令行启动此jar包java -jar命令
注意启动之前先把IDEA的项目关闭否则会报错端口已被占用 java -jar -Xms128m -Xmx256m springBoot01-0.0.1-SNAPSHOT.jar
最小内存占用128MB最大内存占用256MB
访问9090端口
2.1 spring-boot-starter-parent的pom文件分析
有了这个parent标签之后dependencies中的很多dependency都不需要再指定版本整个pom文件的配置都清爽了很多。
那么都是哪些依赖不再需要我们手动指定版本了呢
spring-boot-starter-parent2.6.13pom文件源码
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancemodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.6.13/version/parentartifactIdspring-boot-starter-parent/artifactIdpackagingpom/packagingnamespring-boot-starter-parent/namedescriptionParent pom providing dependency and plugin management for applications built with Maven/descriptionpropertiesjava.version1.8/java.versionresource.delimiter/resource.delimitermaven.compiler.source${java.version}/maven.compiler.sourcemaven.compiler.target${java.version}/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncoding/propertiesurlhttps://spring.io/projects/spring-boot/urllicenseslicensenameApache License, Version 2.0/nameurlhttps://www.apache.org/licenses/LICENSE-2.0/url/license/licensesdevelopersdevelopernamePivotal/nameemailinfopivotal.io/emailorganizationPivotal Software, Inc./organizationorganizationUrlhttps://www.spring.io/organizationUrl/developer/developersscmurlhttps://github.com/spring-projects/spring-boot/url/scmbuildresourcesresourcedirectory${basedir}/src/main/resources/directoryfilteringtrue/filteringincludesinclude**/application*.yml/includeinclude**/application*.yaml/includeinclude**/application*.properties/include/includes/resourceresourcedirectory${basedir}/src/main/resources/directoryexcludesexclude**/application*.yml/excludeexclude**/application*.yaml/excludeexclude**/application*.properties/exclude/excludes/resource/resourcespluginManagementpluginsplugingroupIdorg.jetbrains.kotlin/groupIdartifactIdkotlin-maven-plugin/artifactIdversion${kotlin.version}/versionconfigurationjvmTarget${java.version}/jvmTargetjavaParameterstrue/javaParameters/configurationexecutionsexecutionidcompile/idphasecompile/phasegoalsgoalcompile/goal/goals/executionexecutionidtest-compile/idphasetest-compile/phasegoalsgoaltest-compile/goal/goals/execution/executions/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdconfigurationparameterstrue/parameters/configuration/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-failsafe-plugin/artifactIdexecutionsexecutiongoalsgoalintegration-test/goalgoalverify/goal/goals/execution/executionsconfigurationclassesDirectory${project.build.outputDirectory}/classesDirectory/configuration/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdconfigurationarchivemanifestmainClass${start-class}/mainClassaddDefaultImplementationEntriestrue/addDefaultImplementationEntries/manifest/archive/configuration/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-war-plugin/artifactIdconfigurationarchivemanifestmainClass${start-class}/mainClassaddDefaultImplementationEntriestrue/addDefaultImplementationEntries/manifest/archive/configuration/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-resources-plugin/artifactIdconfigurationpropertiesEncoding${project.build.sourceEncoding}/propertiesEncodingdelimitersdelimiter${resource.delimiter}/delimiter/delimitersuseDefaultDelimitersfalse/useDefaultDelimiters/configuration/pluginplugingroupIdpl.project13.maven/groupIdartifactIdgit-commit-id-plugin/artifactIdexecutionsexecutiongoalsgoalrevision/goal/goals/execution/executionsconfigurationverbosetrue/verbosedateFormatyyyy-MM-ddTHH:mm:ssZ/dateFormatgenerateGitPropertiesFiletrue/generateGitPropertiesFilegenerateGitPropertiesFilename${project.build.outputDirectory}/git.properties/generateGitPropertiesFilename/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdexecutionsexecutionidrepackage/idgoalsgoalrepackage/goal/goals/execution/executionsconfigurationmainClass${start-class}/mainClass/configuration/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-shade-plugin/artifactIdconfigurationkeepDependenciesWithProvidedScopetrue/keepDependenciesWithProvidedScopecreateDependencyReducedPomtrue/createDependencyReducedPomfiltersfilterartifact*:*/artifactexcludesexcludeMETA-INF/*.SF/excludeexcludeMETA-INF/*.DSA/excludeexcludeMETA-INF/*.RSA/exclude/excludes/filter/filters/configurationdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion2.6.13/version/dependency/dependenciesexecutionsexecutionphasepackage/phasegoalsgoalshade/goal/goalsconfigurationtransformerstransformer implementationorg.apache.maven.plugins.shade.resource.AppendingTransformerresourceMETA-INF/spring.handlers/resource/transformertransformer implementationorg.springframework.boot.maven.PropertiesMergingResourceTransformerresourceMETA-INF/spring.factories/resource/transformertransformer implementationorg.apache.maven.plugins.shade.resource.AppendingTransformerresourceMETA-INF/spring.schemas/resource/transformertransformer implementationorg.apache.maven.plugins.shade.resource.ServicesResourceTransformer/transformer implementationorg.apache.maven.plugins.shade.resource.ManifestResourceTransformermainClass${start-class}/mainClass/transformer/transformers/configuration/execution/executions/plugin/plugins/pluginManagement/build
/project
我们可以看到spring-boot-starter-parent其实也是依靠其他pom文件的依赖实现自己的依赖功能的 parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.6.13/version/parentspring-boot-dependencies来真正管理Spring Boot应用里面的所有依赖版本
spring-boot-dependencies是Spring Boot的版本仲裁中心
spring-boot-dependencies2.6.13的pom源码
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancemodelVersion4.0.0/modelVersiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.6.13/versionpackagingpom/packagingnamespring-boot-dependencies/namedescriptionSpring Boot Dependencies/descriptionurlhttps://spring.io/projects/spring-boot/urllicenseslicensenameApache License, Version 2.0/nameurlhttps://www.apache.org/licenses/LICENSE-2.0/url/license/licensesdevelopersdevelopernamePivotal/nameemailinfopivotal.io/emailorganizationPivotal Software, Inc./organizationorganizationUrlhttps://www.spring.io/organizationUrl/developer/developersscmurlhttps://github.com/spring-projects/spring-boot/url/scmpropertiesactivemq.version5.16.5/activemq.versionantlr2.version2.7.7/antlr2.versionappengine-sdk.version1.9.98/appengine-sdk.versionartemis.version2.19.1/artemis.versionaspectj.version1.9.7/aspectj.versionassertj.version3.21.0/assertj.versionatomikos.version4.0.6/atomikos.versionawaitility.version4.1.1/awaitility.versionbuild-helper-maven-plugin.version3.2.0/build-helper-maven-plugin.versionbyte-buddy.version1.11.22/byte-buddy.versioncaffeine.version2.9.3/caffeine.versioncassandra-driver.version4.13.0/cassandra-driver.versionclassmate.version1.5.1/classmate.versioncommons-codec.version1.15/commons-codec.versioncommons-dbcp2.version2.9.0/commons-dbcp2.versioncommons-lang3.version3.12.0/commons-lang3.versioncommons-pool.version1.6/commons-pool.versioncommons-pool2.version2.11.1/commons-pool2.versioncouchbase-client.version3.2.7/couchbase-client.versiondb2-jdbc.version11.5.7.0/db2-jdbc.versiondependency-management-plugin.version1.0.15.RELEASE/dependency-management-plugin.versionderby.version10.14.2.0/derby.versiondropwizard-metrics.version4.2.12/dropwizard-metrics.versionehcache.version2.10.9.2/ehcache.versionehcache3.version3.9.10/ehcache3.versionelasticsearch.version7.15.2/elasticsearch.versionembedded-mongo.version3.0.0/embedded-mongo.versionflyway.version8.0.5/flyway.versionfreemarker.version2.3.31/freemarker.versiongit-commit-id-plugin.version4.9.10/git-commit-id-plugin.versionglassfish-el.version3.0.4/glassfish-el.versionglassfish-jaxb.version2.3.7/glassfish-jaxb.versionglassfish-jstl.version1.2.6/glassfish-jstl.versiongroovy.version3.0.13/groovy.versiongson.version2.8.9/gson.versionh2.version1.4.200/h2.versionhamcrest.version2.2/hamcrest.versionhazelcast.version4.2.5/hazelcast.versionhazelcast-hibernate5.version2.2.1/hazelcast-hibernate5.versionhibernate.version5.6.12.Final/hibernate.versionhibernate-validator.version6.2.5.Final/hibernate-validator.versionhikaricp.version4.0.3/hikaricp.versionhsqldb.version2.5.2/hsqldb.versionhtmlunit.version2.54.0/htmlunit.versionhttpasyncclient.version4.1.5/httpasyncclient.versionhttpclient.version4.5.13/httpclient.versionhttpclient5.version5.1.3/httpclient5.versionhttpcore.version4.4.15/httpcore.versionhttpcore5.version5.1.4/httpcore5.versioninfinispan.version12.1.12.Final/infinispan.versioninfluxdb-java.version2.22/influxdb-java.versionjackson-bom.version2.13.4.20221013/jackson-bom.versionjakarta-activation.version1.2.2/jakarta-activation.versionjakarta-annotation.version1.3.5/jakarta-annotation.versionjakarta-jms.version2.0.3/jakarta-jms.versionjakarta-json.version1.1.6/jakarta-json.versionjakarta-json-bind.version1.0.2/jakarta-json-bind.versionjakarta-mail.version1.6.7/jakarta-mail.versionjakarta-management.version1.1.4/jakarta-management.versionjakarta-persistence.version2.2.3/jakarta-persistence.versionjakarta-servlet.version4.0.4/jakarta-servlet.versionjakarta-servlet-jsp-jstl.version1.2.7/jakarta-servlet-jsp-jstl.versionjakarta-transaction.version1.3.3/jakarta-transaction.versionjakarta-validation.version2.0.2/jakarta-validation.versionjakarta-websocket.version1.1.2/jakarta-websocket.versionjakarta-ws-rs.version2.1.6/jakarta-ws-rs.versionjakarta-xml-bind.version2.3.3/jakarta-xml-bind.versionjakarta-xml-soap.version1.4.2/jakarta-xml-soap.versionjakarta-xml-ws.version2.3.3/jakarta-xml-ws.versionjanino.version3.1.8/janino.versionjavax-activation.version1.2.0/javax-activation.versionjavax-annotation.version1.3.2/javax-annotation.versionjavax-cache.version1.1.1/javax-cache.versionjavax-jaxb.version2.3.1/javax-jaxb.versionjavax-jaxws.version2.3.1/javax-jaxws.versionjavax-jms.version2.0.1/javax-jms.versionjavax-json.version1.1.4/javax-json.versionjavax-jsonb.version1.0/javax-jsonb.versionjavax-mail.version1.6.2/javax-mail.versionjavax-money.version1.1/javax-money.versionjavax-persistence.version2.2/javax-persistence.versionjavax-transaction.version1.3/javax-transaction.versionjavax-validation.version2.0.1.Final/javax-validation.versionjavax-websocket.version1.1/javax-websocket.versionjaxen.version1.2.0/jaxen.versionjaybird.version4.0.6.java8/jaybird.versionjboss-logging.version3.4.3.Final/jboss-logging.versionjdom2.version2.0.6.1/jdom2.versionjedis.version3.7.1/jedis.versionjersey.version2.35/jersey.versionjetty-el.version9.0.52/jetty-el.versionjetty-jsp.version2.2.0.v201112011158/jetty-jsp.versionjetty-reactive-httpclient.version1.1.13/jetty-reactive-httpclient.versionjetty.version9.4.49.v20220914/jetty.versionjmustache.version1.15/jmustache.versionjohnzon.version1.2.19/johnzon.versionjolokia.version1.7.1/jolokia.versionjooq.version3.14.16/jooq.versionjson-path.version2.6.0/json-path.versionjson-smart.version2.4.8/json-smart.versionjsonassert.version1.5.1/jsonassert.versionjstl.version1.2/jstl.versionjtds.version1.3.1/jtds.versionjunit.version4.13.2/junit.versionjunit-jupiter.version5.8.2/junit-jupiter.versionkafka.version3.0.2/kafka.versionkotlin.version1.6.21/kotlin.versionkotlin-coroutines.version1.5.2/kotlin-coroutines.versionlettuce.version6.1.10.RELEASE/lettuce.versionliquibase.version4.5.0/liquibase.versionlog4j2.version2.17.2/log4j2.versionlogback.version1.2.11/logback.versionlombok.version1.18.24/lombok.versionmariadb.version2.7.6/mariadb.versionmaven-antrun-plugin.version3.0.0/maven-antrun-plugin.versionmaven-assembly-plugin.version3.3.0/maven-assembly-plugin.versionmaven-clean-plugin.version3.1.0/maven-clean-plugin.versionmaven-compiler-plugin.version3.8.1/maven-compiler-plugin.versionmaven-dependency-plugin.version3.2.0/maven-dependency-plugin.versionmaven-deploy-plugin.version2.8.2/maven-deploy-plugin.versionmaven-enforcer-plugin.version3.0.0/maven-enforcer-plugin.versionmaven-failsafe-plugin.version2.22.2/maven-failsafe-plugin.versionmaven-help-plugin.version3.2.0/maven-help-plugin.versionmaven-install-plugin.version2.5.2/maven-install-plugin.versionmaven-invoker-plugin.version3.2.2/maven-invoker-plugin.versionmaven-jar-plugin.version3.2.2/maven-jar-plugin.versionmaven-javadoc-plugin.version3.3.2/maven-javadoc-plugin.versionmaven-resources-plugin.version3.2.0/maven-resources-plugin.versionmaven-shade-plugin.version3.2.4/maven-shade-plugin.versionmaven-source-plugin.version3.2.1/maven-source-plugin.versionmaven-surefire-plugin.version2.22.2/maven-surefire-plugin.versionmaven-war-plugin.version3.3.2/maven-war-plugin.versionmicrometer.version1.8.11/micrometer.versionmimepull.version1.9.15/mimepull.versionmockito.version4.0.0/mockito.versionmongodb.version4.4.2/mongodb.versionmssql-jdbc.version9.4.1.jre8/mssql-jdbc.versionmysql.version8.0.31/mysql.versionnekohtml.version1.9.22/nekohtml.versionneo4j-java-driver.version4.4.9/neo4j-java-driver.versionnetty.version4.1.84.Final/netty.versionnetty-tcnative.version2.0.54.Final/netty-tcnative.versionokhttp3.version3.14.9/okhttp3.versionoracle-database.version21.3.0.0/oracle-database.versionpooled-jms.version1.2.4/pooled-jms.versionpostgresql.version42.3.7/postgresql.versionprometheus-client.version0.12.0/prometheus-client.versionquartz.version2.3.2/quartz.versionquerydsl.version5.0.0/querydsl.versionr2dbc-bom.versionArabba-SR13/r2dbc-bom.versionrabbit-amqp-client.version5.13.1/rabbit-amqp-client.versionrabbit-stream-client.version0.4.0/rabbit-stream-client.versionreactive-streams.version1.0.4/reactive-streams.versionreactor-bom.version2020.0.24/reactor-bom.versionrest-assured.version4.4.0/rest-assured.versionrsocket.version1.1.3/rsocket.versionrxjava.version1.3.8/rxjava.versionrxjava-adapter.version1.2.1/rxjava-adapter.versionrxjava2.version2.2.21/rxjava2.versionsaaj-impl.version1.5.3/saaj-impl.versionselenium.version3.141.59/selenium.versionselenium-htmlunit.version2.54.0/selenium-htmlunit.versionsendgrid.version4.7.6/sendgrid.versionservlet-api.version4.0.1/servlet-api.versionslf4j.version1.7.36/slf4j.versionsnakeyaml.version1.29/snakeyaml.versionsolr.version8.8.2/solr.versionspring-amqp.version2.4.7/spring-amqp.versionspring-batch.version4.3.7/spring-batch.versionspring-data-bom.version2021.1.9/spring-data-bom.versionspring-framework.version5.3.23/spring-framework.versionspring-hateoas.version1.4.5/spring-hateoas.versionspring-integration.version5.5.15/spring-integration.versionspring-kafka.version2.8.10/spring-kafka.versionspring-ldap.version2.3.8.RELEASE/spring-ldap.versionspring-restdocs.version2.0.6.RELEASE/spring-restdocs.versionspring-retry.version1.3.4/spring-retry.versionspring-security.version5.6.8/spring-security.versionspring-session-bom.version2021.1.3/spring-session-bom.versionspring-ws.version3.1.3/spring-ws.versionsqlite-jdbc.version3.36.0.3/sqlite-jdbc.versionsun-mail.version1.6.7/sun-mail.versionthymeleaf.version3.0.15.RELEASE/thymeleaf.versionthymeleaf-extras-data-attribute.version2.0.1/thymeleaf-extras-data-attribute.versionthymeleaf-extras-java8time.version3.0.4.RELEASE/thymeleaf-extras-java8time.versionthymeleaf-extras-springsecurity.version3.0.4.RELEASE/thymeleaf-extras-springsecurity.versionthymeleaf-layout-dialect.version3.0.0/thymeleaf-layout-dialect.versiontomcat.version9.0.68/tomcat.versionunboundid-ldapsdk.version4.0.14/unboundid-ldapsdk.versionundertow.version2.2.20.Final/undertow.versionversions-maven-plugin.version2.8.1/versions-maven-plugin.versionwebjars-locator-core.version0.48/webjars-locator-core.versionwsdl4j.version1.6.3/wsdl4j.versionxml-maven-plugin.version1.0.2/xml-maven-plugin.versionxmlunit2.version2.8.4/xmlunit2.version/propertiesdependencyManagementdependenciesdependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-amqp/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-blueprint/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-broker/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-camel/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-client/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-console/artifactIdversion${activemq.version}/versionexclusionsexclusiongroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-http/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-jaas/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-jdbc-store/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-jms-pool/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-kahadb-store/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-karaf/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-leveldb-store/artifactIdversion${activemq.version}/versionexclusionsexclusiongroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-log4j-appender/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-mqtt/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-openwire-generator/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-openwire-legacy/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-osgi/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-partition/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-pool/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-ra/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-run/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-runtime-config/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-shiro/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-spring/artifactIdversion${activemq.version}/versionexclusionsexclusiongroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-stomp/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-web/artifactIdversion${activemq.version}/version/dependencydependencygroupIdantlr/groupIdartifactIdantlr/artifactIdversion${antlr2.version}/version/dependencydependencygroupIdcom.google.appengine/groupIdartifactIdappengine-api-1.0-sdk/artifactIdversion${appengine-sdk.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdartemis-amqp-protocol/artifactIdversion${artemis.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdartemis-commons/artifactIdversion${artemis.version}/versionexclusionsexclusiongroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdartemis-core-client/artifactIdversion${artemis.version}/versionexclusionsexclusiongroupIdorg.apache.geronimo.specs/groupIdartifactIdgeronimo-json_1.0_spec/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdartemis-jdbc-store/artifactIdversion${artemis.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdartemis-jms-client/artifactIdversion${artemis.version}/versionexclusionsexclusiongroupIdorg.apache.geronimo.specs/groupIdartifactIdgeronimo-json_1.0_spec/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdartemis-jms-server/artifactIdversion${artemis.version}/versionexclusionsexclusiongroupIdorg.apache.geronimo.specs/groupIdartifactIdgeronimo-json_1.0_spec/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdartemis-journal/artifactIdversion${artemis.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdartemis-quorum-api/artifactIdversion${artemis.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdartemis-selector/artifactIdversion${artemis.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdartemis-server/artifactIdversion${artemis.version}/versionexclusionsexclusiongroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusionexclusiongroupIdorg.apache.geronimo.specs/groupIdartifactIdgeronimo-json_1.0_spec/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdartemis-service-extensions/artifactIdversion${artemis.version}/version/dependencydependencygroupIdorg.aspectj/groupIdartifactIdaspectjrt/artifactIdversion${aspectj.version}/version/dependencydependencygroupIdorg.aspectj/groupIdartifactIdaspectjtools/artifactIdversion${aspectj.version}/version/dependencydependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion${aspectj.version}/version/dependencydependencygroupIdorg.assertj/groupIdartifactIdassertj-core/artifactIdversion${assertj.version}/version/dependencydependencygroupIdcom.atomikos/groupIdartifactIdtransactions-jdbc/artifactIdversion${atomikos.version}/version/dependencydependencygroupIdcom.atomikos/groupIdartifactIdtransactions-jms/artifactIdversion${atomikos.version}/version/dependencydependencygroupIdcom.atomikos/groupIdartifactIdtransactions-jta/artifactIdversion${atomikos.version}/version/dependencydependencygroupIdorg.awaitility/groupIdartifactIdawaitility/artifactIdversion${awaitility.version}/version/dependencydependencygroupIdorg.awaitility/groupIdartifactIdawaitility-groovy/artifactIdversion${awaitility.version}/version/dependencydependencygroupIdorg.awaitility/groupIdartifactIdawaitility-kotlin/artifactIdversion${awaitility.version}/version/dependencydependencygroupIdorg.awaitility/groupIdartifactIdawaitility-scala/artifactIdversion${awaitility.version}/version/dependencydependencygroupIdnet.bytebuddy/groupIdartifactIdbyte-buddy/artifactIdversion${byte-buddy.version}/version/dependencydependencygroupIdnet.bytebuddy/groupIdartifactIdbyte-buddy-agent/artifactIdversion${byte-buddy.version}/version/dependencydependencygroupIdcom.github.ben-manes.caffeine/groupIdartifactIdcaffeine/artifactIdversion${caffeine.version}/version/dependencydependencygroupIdcom.github.ben-manes.caffeine/groupIdartifactIdguava/artifactIdversion${caffeine.version}/version/dependencydependencygroupIdcom.github.ben-manes.caffeine/groupIdartifactIdjcache/artifactIdversion${caffeine.version}/version/dependencydependencygroupIdcom.github.ben-manes.caffeine/groupIdartifactIdsimulator/artifactIdversion${caffeine.version}/version/dependencydependencygroupIdcom.datastax.oss/groupIdartifactIdjava-driver-core/artifactIdversion${cassandra-driver.version}/versionexclusionsexclusiongroupIdorg.slf4j/groupIdartifactIdjcl-over-slf4j/artifactId/exclusion/exclusions/dependencydependencygroupIdcom.fasterxml/groupIdartifactIdclassmate/artifactIdversion${classmate.version}/version/dependencydependencygroupIdcommons-codec/groupIdartifactIdcommons-codec/artifactIdversion${commons-codec.version}/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-dbcp2/artifactIdversion${commons-dbcp2.version}/versionexclusionsexclusiongroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactIdversion${commons-lang3.version}/version/dependencydependencygroupIdcommons-pool/groupIdartifactIdcommons-pool/artifactIdversion${commons-pool.version}/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactIdversion${commons-pool2.version}/version/dependencydependencygroupIdcom.couchbase.client/groupIdartifactIdjava-client/artifactIdversion${couchbase-client.version}/version/dependencydependencygroupIdcom.ibm.db2/groupIdartifactIdjcc/artifactIdversion${db2-jdbc.version}/version/dependencydependencygroupIdio.spring.gradle/groupIdartifactIddependency-management-plugin/artifactIdversion${dependency-management-plugin.version}/version/dependencydependencygroupIdorg.apache.derby/groupIdartifactIdderby/artifactIdversion${derby.version}/version/dependencydependencygroupIdorg.apache.derby/groupIdartifactIdderbyclient/artifactIdversion${derby.version}/version/dependencydependencygroupIdorg.apache.derby/groupIdartifactIdderbynet/artifactIdversion${derby.version}/version/dependencydependencygroupIdorg.apache.derby/groupIdartifactIdderbyoptionaltools/artifactIdversion${derby.version}/version/dependencydependencygroupIdorg.apache.derby/groupIdartifactIdderbytools/artifactIdversion${derby.version}/version/dependencydependencygroupIdnet.sf.ehcache/groupIdartifactIdehcache/artifactIdversion${ehcache.version}/version/dependencydependencygroupIdorg.ehcache/groupIdartifactIdehcache/artifactIdversion${ehcache3.version}/version/dependencydependencygroupIdorg.ehcache/groupIdartifactIdehcache-clustered/artifactIdversion${ehcache3.version}/version/dependencydependencygroupIdorg.ehcache/groupIdartifactIdehcache-transactions/artifactIdversion${ehcache3.version}/version/dependencydependencygroupIdorg.elasticsearch/groupIdartifactIdelasticsearch/artifactIdversion${elasticsearch.version}/version/dependencydependencygroupIdorg.elasticsearch.client/groupIdartifactIdtransport/artifactIdversion${elasticsearch.version}/version/dependencydependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-client/artifactIdversion${elasticsearch.version}/versionexclusionsexclusiongroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-client-sniffer/artifactIdversion${elasticsearch.version}/versionexclusionsexclusiongroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactIdversion${elasticsearch.version}/version/dependencydependencygroupIdorg.elasticsearch.distribution.integ-test-zip/groupIdartifactIdelasticsearch/artifactIdversion${elasticsearch.version}/versiontypezip/type/dependencydependencygroupIdorg.elasticsearch.plugin/groupIdartifactIdtransport-netty4-client/artifactIdversion${elasticsearch.version}/version/dependencydependencygroupIdde.flapdoodle.embed/groupIdartifactIdde.flapdoodle.embed.mongo/artifactIdversion${embedded-mongo.version}/version/dependencydependencygroupIdorg.flywaydb/groupIdartifactIdflyway-core/artifactIdversion${flyway.version}/version/dependencydependencygroupIdorg.freemarker/groupIdartifactIdfreemarker/artifactIdversion${freemarker.version}/version/dependencydependencygroupIdorg.glassfish/groupIdartifactIdjakarta.el/artifactIdversion${glassfish-el.version}/version/dependencydependencygroupIdorg.glassfish.jaxb/groupIdartifactIdcodemodel/artifactIdversion${glassfish-jaxb.version}/version/dependencydependencygroupIdorg.glassfish.jaxb/groupIdartifactIdcodemodel-annotation-compiler/artifactIdversion${glassfish-jaxb.version}/version/dependencydependencygroupIdorg.glassfish.jaxb/groupIdartifactIdjaxb-jxc/artifactIdversion${glassfish-jaxb.version}/version/dependencydependencygroupIdorg.glassfish.jaxb/groupIdartifactIdjaxb-runtime/artifactIdversion${glassfish-jaxb.version}/version/dependencydependencygroupIdorg.glassfish.jaxb/groupIdartifactIdjaxb-xjc/artifactIdversion${glassfish-jaxb.version}/version/dependencydependencygroupIdorg.glassfish.jaxb/groupIdartifactIdtxw2/artifactIdversion${glassfish-jaxb.version}/version/dependencydependencygroupIdorg.glassfish.jaxb/groupIdartifactIdtxwc2/artifactIdversion${glassfish-jaxb.version}/version/dependencydependencygroupIdorg.glassfish.jaxb/groupIdartifactIdxsom/artifactIdversion${glassfish-jaxb.version}/version/dependencydependencygroupIdorg.glassfish.web/groupIdartifactIdjakarta.servlet.jsp.jstl/artifactIdversion${glassfish-jstl.version}/version/dependencydependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion${gson.version}/version/dependencydependencygroupIdcom.h2database/groupIdartifactIdh2/artifactIdversion${h2.version}/version/dependencydependencygroupIdorg.hamcrest/groupIdartifactIdhamcrest/artifactIdversion${hamcrest.version}/version/dependencydependencygroupIdorg.hamcrest/groupIdartifactIdhamcrest-core/artifactIdversion${hamcrest.version}/version/dependencydependencygroupIdorg.hamcrest/groupIdartifactIdhamcrest-library/artifactIdversion${hamcrest.version}/version/dependencydependencygroupIdcom.hazelcast/groupIdartifactIdhazelcast/artifactIdversion${hazelcast.version}/version/dependencydependencygroupIdcom.hazelcast/groupIdartifactIdhazelcast-spring/artifactIdversion${hazelcast.version}/version/dependencydependencygroupIdcom.hazelcast/groupIdartifactIdhazelcast-hibernate52/artifactIdversion${hazelcast-hibernate5.version}/version/dependencydependencygroupIdcom.hazelcast/groupIdartifactIdhazelcast-hibernate53/artifactIdversion${hazelcast-hibernate5.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-c3p0/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-core/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-ehcache/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-entitymanager/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-envers/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-hikaricp/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-java8/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-jcache/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-jpamodelgen/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-micrometer/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-proxool/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-spatial/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-testing/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate/groupIdartifactIdhibernate-vibur/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.hibernate.validator/groupIdartifactIdhibernate-validator/artifactIdversion${hibernate-validator.version}/version/dependencydependencygroupIdorg.hibernate.validator/groupIdartifactIdhibernate-validator-annotation-processor/artifactIdversion${hibernate-validator.version}/version/dependencydependencygroupIdcom.zaxxer/groupIdartifactIdHikariCP/artifactIdversion${hikaricp.version}/version/dependencydependencygroupIdorg.hsqldb/groupIdartifactIdhsqldb/artifactIdversion${hsqldb.version}/version/dependencydependencygroupIdnet.sourceforge.htmlunit/groupIdartifactIdhtmlunit/artifactIdversion${htmlunit.version}/versionexclusionsexclusiongroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpasyncclient/artifactIdversion${httpasyncclient.version}/versionexclusionsexclusiongroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.httpcomponents/groupIdartifactIdfluent-hc/artifactIdversion${httpclient.version}/version/dependencydependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactIdversion${httpclient.version}/versionexclusionsexclusiongroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient-cache/artifactIdversion${httpclient.version}/version/dependencydependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient-osgi/artifactIdversion${httpclient.version}/version/dependencydependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient-win/artifactIdversion${httpclient.version}/version/dependencydependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpmime/artifactIdversion${httpclient.version}/version/dependencydependencygroupIdorg.apache.httpcomponents.client5/groupIdartifactIdhttpclient5/artifactIdversion${httpclient5.version}/version/dependencydependencygroupIdorg.apache.httpcomponents.client5/groupIdartifactIdhttpclient5-cache/artifactIdversion${httpclient5.version}/version/dependencydependencygroupIdorg.apache.httpcomponents.client5/groupIdartifactIdhttpclient5-fluent/artifactIdversion${httpclient5.version}/version/dependencydependencygroupIdorg.apache.httpcomponents.client5/groupIdartifactIdhttpclient5-win/artifactIdversion${httpclient5.version}/version/dependencydependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpcore/artifactIdversion${httpcore.version}/version/dependencydependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpcore-nio/artifactIdversion${httpcore.version}/version/dependencydependencygroupIdorg.apache.httpcomponents.core5/groupIdartifactIdhttpcore5/artifactIdversion${httpcore5.version}/version/dependencydependencygroupIdorg.apache.httpcomponents.core5/groupIdartifactIdhttpcore5-h2/artifactIdversion${httpcore5.version}/version/dependencydependencygroupIdorg.apache.httpcomponents.core5/groupIdartifactIdhttpcore5-reactive/artifactIdversion${httpcore5.version}/version/dependencydependencygroupIdorg.influxdb/groupIdartifactIdinfluxdb-java/artifactIdversion${influxdb-java.version}/version/dependencydependencygroupIdcom.sun.activation/groupIdartifactIdjakarta.activation/artifactIdversion${jakarta-activation.version}/version/dependencydependencygroupIdjakarta.activation/groupIdartifactIdjakarta.activation-api/artifactIdversion${jakarta-activation.version}/version/dependencydependencygroupIdjakarta.annotation/groupIdartifactIdjakarta.annotation-api/artifactIdversion${jakarta-annotation.version}/version/dependencydependencygroupIdjakarta.jms/groupIdartifactIdjakarta.jms-api/artifactIdversion${jakarta-jms.version}/version/dependencydependencygroupIdjakarta.json/groupIdartifactIdjakarta.json-api/artifactIdversion${jakarta-json.version}/version/dependencydependencygroupIdjakarta.json.bind/groupIdartifactIdjakarta.json.bind-api/artifactIdversion${jakarta-json-bind.version}/version/dependencydependencygroupIdjakarta.mail/groupIdartifactIdjakarta.mail-api/artifactIdversion${jakarta-mail.version}/version/dependencydependencygroupIdjakarta.management.j2ee/groupIdartifactIdjakarta.management.j2ee-api/artifactIdversion${jakarta-management.version}/version/dependencydependencygroupIdjakarta.persistence/groupIdartifactIdjakarta.persistence-api/artifactIdversion${jakarta-persistence.version}/version/dependencydependencygroupIdjakarta.servlet/groupIdartifactIdjakarta.servlet-api/artifactIdversion${jakarta-servlet.version}/version/dependencydependencygroupIdjakarta.servlet.jsp.jstl/groupIdartifactIdjakarta.servlet.jsp.jstl-api/artifactIdversion${jakarta-servlet-jsp-jstl.version}/version/dependencydependencygroupIdjakarta.transaction/groupIdartifactIdjakarta.transaction-api/artifactIdversion${jakarta-transaction.version}/version/dependencydependencygroupIdjakarta.validation/groupIdartifactIdjakarta.validation-api/artifactIdversion${jakarta-validation.version}/version/dependencydependencygroupIdjakarta.websocket/groupIdartifactIdjakarta.websocket-api/artifactIdversion${jakarta-websocket.version}/version/dependencydependencygroupIdjakarta.ws.rs/groupIdartifactIdjakarta.ws.rs-api/artifactIdversion${jakarta-ws-rs.version}/version/dependencydependencygroupIdjakarta.xml.bind/groupIdartifactIdjakarta.xml.bind-api/artifactIdversion${jakarta-xml-bind.version}/version/dependencydependencygroupIdjakarta.xml.soap/groupIdartifactIdjakarta.xml.soap-api/artifactIdversion${jakarta-xml-soap.version}/version/dependencydependencygroupIdjakarta.xml.ws/groupIdartifactIdjakarta.xml.ws-api/artifactIdversion${jakarta-xml-ws.version}/version/dependencydependencygroupIdorg.codehaus.janino/groupIdartifactIdcommons-compiler/artifactIdversion${janino.version}/version/dependencydependencygroupIdorg.codehaus.janino/groupIdartifactIdcommons-compiler-jdk/artifactIdversion${janino.version}/version/dependencydependencygroupIdorg.codehaus.janino/groupIdartifactIdjanino/artifactIdversion${janino.version}/version/dependencydependencygroupIdjavax.activation/groupIdartifactIdjavax.activation-api/artifactIdversion${javax-activation.version}/version/dependencydependencygroupIdjavax.annotation/groupIdartifactIdjavax.annotation-api/artifactIdversion${javax-annotation.version}/version/dependencydependencygroupIdjavax.cache/groupIdartifactIdcache-api/artifactIdversion${javax-cache.version}/version/dependencydependencygroupIdjavax.xml.bind/groupIdartifactIdjaxb-api/artifactIdversion${javax-jaxb.version}/version/dependencydependencygroupIdjavax.xml.ws/groupIdartifactIdjaxws-api/artifactIdversion${javax-jaxws.version}/version/dependencydependencygroupIdjavax.jms/groupIdartifactIdjavax.jms-api/artifactIdversion${javax-jms.version}/version/dependencydependencygroupIdjavax.json/groupIdartifactIdjavax.json-api/artifactIdversion${javax-json.version}/version/dependencydependencygroupIdjavax.json.bind/groupIdartifactIdjavax.json.bind-api/artifactIdversion${javax-jsonb.version}/version/dependencydependencygroupIdjavax.mail/groupIdartifactIdjavax.mail-api/artifactIdversion${javax-mail.version}/version/dependencydependencygroupIdjavax.money/groupIdartifactIdmoney-api/artifactIdversion${javax-money.version}/version/dependencydependencygroupIdjavax.persistence/groupIdartifactIdjavax.persistence-api/artifactIdversion${javax-persistence.version}/version/dependencydependencygroupIdjavax.transaction/groupIdartifactIdjavax.transaction-api/artifactIdversion${javax-transaction.version}/version/dependencydependencygroupIdjavax.validation/groupIdartifactIdvalidation-api/artifactIdversion${javax-validation.version}/version/dependencydependencygroupIdjavax.websocket/groupIdartifactIdjavax.websocket-api/artifactIdversion${javax-websocket.version}/version/dependencydependencygroupIdjaxen/groupIdartifactIdjaxen/artifactIdversion${jaxen.version}/version/dependencydependencygroupIdorg.firebirdsql.jdbc/groupIdartifactIdjaybird/artifactIdversion${jaybird.version}/version/dependencydependencygroupIdorg.firebirdsql.jdbc/groupIdartifactIdjaybird-jdk18/artifactIdversion${jaybird.version}/version/dependencydependencygroupIdorg.jboss.logging/groupIdartifactIdjboss-logging/artifactIdversion${jboss-logging.version}/version/dependencydependencygroupIdorg.jdom/groupIdartifactIdjdom2/artifactIdversion${jdom2.version}/version/dependencydependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion${jedis.version}/version/dependencydependencygroupIdorg.mortbay.jasper/groupIdartifactIdapache-el/artifactIdversion${jetty-el.version}/version/dependencydependencygroupIdorg.eclipse.jetty.orbit/groupIdartifactIdjavax.servlet.jsp/artifactIdversion${jetty-jsp.version}/version/dependencydependencygroupIdorg.eclipse.jetty/groupIdartifactIdjetty-reactive-httpclient/artifactIdversion${jetty-reactive-httpclient.version}/version/dependencydependencygroupIdcom.samskivert/groupIdartifactIdjmustache/artifactIdversion${jmustache.version}/version/dependencydependencygroupIdorg.apache.johnzon/groupIdartifactIdjohnzon-core/artifactIdversion${johnzon.version}/version/dependencydependencygroupIdorg.apache.johnzon/groupIdartifactIdjohnzon-jaxrs/artifactIdversion${johnzon.version}/version/dependencydependencygroupIdorg.apache.johnzon/groupIdartifactIdjohnzon-jsonb/artifactIdversion${johnzon.version}/version/dependencydependencygroupIdorg.apache.johnzon/groupIdartifactIdjohnzon-jsonb-extras/artifactIdversion${johnzon.version}/version/dependencydependencygroupIdorg.apache.johnzon/groupIdartifactIdjohnzon-jsonschema/artifactIdversion${johnzon.version}/version/dependencydependencygroupIdorg.apache.johnzon/groupIdartifactIdjohnzon-mapper/artifactIdversion${johnzon.version}/version/dependencydependencygroupIdorg.apache.johnzon/groupIdartifactIdjohnzon-websocket/artifactIdversion${johnzon.version}/version/dependencydependencygroupIdorg.jolokia/groupIdartifactIdjolokia-core/artifactIdversion${jolokia.version}/version/dependencydependencygroupIdorg.jooq/groupIdartifactIdjooq/artifactIdversion${jooq.version}/version/dependencydependencygroupIdorg.jooq/groupIdartifactIdjooq-codegen/artifactIdversion${jooq.version}/version/dependencydependencygroupIdorg.jooq/groupIdartifactIdjooq-kotlin/artifactIdversion${jooq.version}/version/dependencydependencygroupIdorg.jooq/groupIdartifactIdjooq-meta/artifactIdversion${jooq.version}/version/dependencydependencygroupIdcom.jayway.jsonpath/groupIdartifactIdjson-path/artifactIdversion${json-path.version}/version/dependencydependencygroupIdcom.jayway.jsonpath/groupIdartifactIdjson-path-assert/artifactIdversion${json-path.version}/version/dependencydependencygroupIdnet.minidev/groupIdartifactIdjson-smart/artifactIdversion${json-smart.version}/version/dependencydependencygroupIdorg.skyscreamer/groupIdartifactIdjsonassert/artifactIdversion${jsonassert.version}/version/dependencydependencygroupIdjavax.servlet/groupIdartifactIdjstl/artifactIdversion${jstl.version}/version/dependencydependencygroupIdnet.sourceforge.jtds/groupIdartifactIdjtds/artifactIdversion${jtds.version}/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdconnect/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdconnect-api/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdconnect-basic-auth-extension/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdconnect-file/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdconnect-json/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdconnect-mirror/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdconnect-mirror-client/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdconnect-runtime/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdconnect-transforms/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdgenerator/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-clients/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-clients/artifactIdversion${kafka.version}/versionclassifiertest/classifier/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-log4j-appender/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-metadata/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-raft/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-server-common/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-shell/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-storage/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-storage-api/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-streams/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-streams-scala_2.12/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-streams-scala_2.13/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-streams-test-utils/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-tools/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka_2.12/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka_2.12/artifactIdversion${kafka.version}/versionclassifiertest/classifier/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka_2.13/artifactIdversion${kafka.version}/version/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdkafka_2.13/artifactIdversion${kafka.version}/versionclassifiertest/classifier/dependencydependencygroupIdorg.apache.kafka/groupIdartifactIdtrogdor/artifactIdversion${kafka.version}/version/dependencydependencygroupIdio.lettuce/groupIdartifactIdlettuce-core/artifactIdversion${lettuce.version}/version/dependencydependencygroupIdorg.liquibase/groupIdartifactIdliquibase-cdi/artifactIdversion${liquibase.version}/version/dependencydependencygroupIdorg.liquibase/groupIdartifactIdliquibase-core/artifactIdversion${liquibase.version}/version/dependencydependencygroupIdch.qos.logback/groupIdartifactIdlogback-access/artifactIdversion${logback.version}/version/dependencydependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion${logback.version}/version/dependencydependencygroupIdch.qos.logback/groupIdartifactIdlogback-core/artifactIdversion${logback.version}/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/version/dependencydependencygroupIdorg.mariadb.jdbc/groupIdartifactIdmariadb-java-client/artifactIdversion${mariadb.version}/version/dependencydependencygroupIdio.micrometer/groupIdartifactIdmicrometer-registry-stackdriver/artifactIdversion${micrometer.version}/versionexclusionsexclusiongroupIdjavax.annotation/groupIdartifactIdjavax.annotation-api/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.jvnet.mimepull/groupIdartifactIdmimepull/artifactIdversion${mimepull.version}/version/dependencydependencygroupIdorg.mockito/groupIdartifactIdmockito-core/artifactIdversion${mockito.version}/version/dependencydependencygroupIdorg.mockito/groupIdartifactIdmockito-inline/artifactIdversion${mockito.version}/version/dependencydependencygroupIdorg.mockito/groupIdartifactIdmockito-junit-jupiter/artifactIdversion${mockito.version}/version/dependencydependencygroupIdorg.mongodb/groupIdartifactIdbson/artifactIdversion${mongodb.version}/version/dependencydependencygroupIdorg.mongodb/groupIdartifactIdmongodb-driver-core/artifactIdversion${mongodb.version}/version/dependencydependencygroupIdorg.mongodb/groupIdartifactIdmongodb-driver-legacy/artifactIdversion${mongodb.version}/version/dependencydependencygroupIdorg.mongodb/groupIdartifactIdmongodb-driver-reactivestreams/artifactIdversion${mongodb.version}/version/dependencydependencygroupIdorg.mongodb/groupIdartifactIdmongodb-driver-sync/artifactIdversion${mongodb.version}/version/dependencydependencygroupIdcom.microsoft.sqlserver/groupIdartifactIdmssql-jdbc/artifactIdversion${mssql-jdbc.version}/version/dependencydependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdversion${mysql.version}/versionexclusionsexclusiongroupIdcom.google.protobuf/groupIdartifactIdprotobuf-java/artifactId/exclusion/exclusions/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/versionexclusionsexclusiongroupIdcom.google.protobuf/groupIdartifactIdprotobuf-java/artifactId/exclusion/exclusions/dependencydependencygroupIdnet.sourceforge.nekohtml/groupIdartifactIdnekohtml/artifactIdversion${nekohtml.version}/version/dependencydependencygroupIdorg.neo4j.driver/groupIdartifactIdneo4j-java-driver/artifactIdversion${neo4j-java-driver.version}/version/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-tcnative/artifactIdversion${netty-tcnative.version}/version/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-tcnative/artifactIdversion${netty-tcnative.version}/versionclassifierlinux-x86_64/classifier/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-tcnative/artifactIdversion${netty-tcnative.version}/versionclassifierlinux-x86_64-fedora/classifier/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-tcnative/artifactIdversion${netty-tcnative.version}/versionclassifierlinux-aarch_64-fedora/classifier/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-tcnative/artifactIdversion${netty-tcnative.version}/versionclassifierosx-x86_64/classifier/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-tcnative-boringssl-static/artifactIdversion${netty-tcnative.version}/version/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-tcnative-boringssl-static/artifactIdversion${netty-tcnative.version}/versionclassifierlinux-x86_64/classifier/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-tcnative-boringssl-static/artifactIdversion${netty-tcnative.version}/versionclassifierosx-aarch_64/classifier/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-tcnative-boringssl-static/artifactIdversion${netty-tcnative.version}/versionclassifierwindows-x86_64/classifier/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-tcnative-boringssl-static/artifactIdversion${netty-tcnative.version}/versionclassifierlinux-aarch_64/classifier/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-tcnative-boringssl-static/artifactIdversion${netty-tcnative.version}/versionclassifierosx-x86_64/classifier/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-tcnative-classes/artifactIdversion${netty-tcnative.version}/version/dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdlogging-interceptor/artifactIdversion${okhttp3.version}/version/dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdmockwebserver/artifactIdversion${okhttp3.version}/version/dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokcurl/artifactIdversion${okhttp3.version}/version/dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp/artifactIdversion${okhttp3.version}/version/dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp-dnsoverhttps/artifactIdversion${okhttp3.version}/version/dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp-sse/artifactIdversion${okhttp3.version}/version/dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp-testing-support/artifactIdversion${okhttp3.version}/version/dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp-tls/artifactIdversion${okhttp3.version}/version/dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp-urlconnection/artifactIdversion${okhttp3.version}/version/dependencydependencygroupIdorg.messaginghub/groupIdartifactIdpooled-jms/artifactIdversion${pooled-jms.version}/version/dependencydependencygroupIdorg.postgresql/groupIdartifactIdpostgresql/artifactIdversion${postgresql.version}/version/dependencydependencygroupIdorg.quartz-scheduler/groupIdartifactIdquartz/artifactIdversion${quartz.version}/versionexclusionsexclusiongroupIdcom.mchange/groupIdartifactIdc3p0/artifactId/exclusionexclusiongroupIdcom.zaxxer/groupIdartifactId*/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.quartz-scheduler/groupIdartifactIdquartz-jobs/artifactIdversion${quartz.version}/version/dependencydependencygroupIdcom.rabbitmq/groupIdartifactIdamqp-client/artifactIdversion${rabbit-amqp-client.version}/version/dependencydependencygroupIdcom.rabbitmq/groupIdartifactIdstream-client/artifactIdversion${rabbit-stream-client.version}/version/dependencydependencygroupIdorg.reactivestreams/groupIdartifactIdreactive-streams/artifactIdversion${reactive-streams.version}/version/dependencydependencygroupIdio.rest-assured/groupIdartifactIdjson-path/artifactIdversion${rest-assured.version}/version/dependencydependencygroupIdio.rest-assured/groupIdartifactIdjson-schema-validator/artifactIdversion${rest-assured.version}/version/dependencydependencygroupIdio.rest-assured/groupIdartifactIdkotlin-extensions/artifactIdversion${rest-assured.version}/version/dependencydependencygroupIdio.rest-assured/groupIdartifactIdrest-assured/artifactIdversion${rest-assured.version}/version/dependencydependencygroupIdio.rest-assured/groupIdartifactIdrest-assured-common/artifactIdversion${rest-assured.version}/version/dependencydependencygroupIdio.rest-assured/groupIdartifactIdscala-support/artifactIdversion${rest-assured.version}/version/dependencydependencygroupIdio.rest-assured/groupIdartifactIdspring-commons/artifactIdversion${rest-assured.version}/version/dependencydependencygroupIdio.rest-assured/groupIdartifactIdspring-mock-mvc/artifactIdversion${rest-assured.version}/version/dependencydependencygroupIdio.rest-assured/groupIdartifactIdspring-mock-mvc-kotlin-extensions/artifactIdversion${rest-assured.version}/version/dependencydependencygroupIdio.rest-assured/groupIdartifactIdspring-web-test-client/artifactIdversion${rest-assured.version}/version/dependencydependencygroupIdio.rest-assured/groupIdartifactIdxml-path/artifactIdversion${rest-assured.version}/version/dependencydependencygroupIdio.reactivex/groupIdartifactIdrxjava/artifactIdversion${rxjava.version}/version/dependencydependencygroupIdio.reactivex/groupIdartifactIdrxjava-reactive-streams/artifactIdversion${rxjava-adapter.version}/version/dependencydependencygroupIdio.reactivex.rxjava2/groupIdartifactIdrxjava/artifactIdversion${rxjava2.version}/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-test/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-test-autoconfigure/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-actuator/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-actuator-autoconfigure/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-autoconfigure/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-autoconfigure-processor/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-buildpack-platform/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-metadata/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-jarmode-layertools/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-loader/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-loader-tools/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-properties-migrator/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-activemq/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-artemis/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-batch/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-cache/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-cassandra/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-cassandra-reactive/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-couchbase/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-couchbase-reactive/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-elasticsearch/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jdbc/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-ldap/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb-reactive/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-r2dbc/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis-reactive/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-neo4j/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-rest/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-freemarker/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-groovy-templates/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-hateoas/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-integration/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jersey/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jetty/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jooq/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-json/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jta-atomikos/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j2/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-mail/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-mustache/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-oauth2-client/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-oauth2-resource-server/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-quartz/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-reactor-netty/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-rsocket/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-security/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-tomcat/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-undertow/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-webflux/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactIdversion2.6.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web-services/artifactIdversion2.6.13/version/dependencydependencygroupIdcom.sun.xml.messaging.saaj/groupIdartifactIdsaaj-impl/artifactIdversion${saaj-impl.version}/version/dependencydependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-api/artifactIdversion${selenium.version}/version/dependencydependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-chrome-driver/artifactIdversion${selenium.version}/version/dependencydependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-edge-driver/artifactIdversion${selenium.version}/version/dependencydependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-firefox-driver/artifactIdversion${selenium.version}/version/dependencydependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-ie-driver/artifactIdversion${selenium.version}/version/dependencydependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-java/artifactIdversion${selenium.version}/version/dependencydependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-opera-driver/artifactIdversion${selenium.version}/version/dependencydependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-remote-driver/artifactIdversion${selenium.version}/version/dependencydependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-safari-driver/artifactIdversion${selenium.version}/version/dependencydependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-support/artifactIdversion${selenium.version}/version/dependencydependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdhtmlunit-driver/artifactIdversion${selenium-htmlunit.version}/version/dependencydependencygroupIdcom.sendgrid/groupIdartifactIdsendgrid-java/artifactIdversion${sendgrid.version}/version/dependencydependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion${servlet-api.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdjcl-over-slf4j/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdjul-to-slf4j/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdlog4j-over-slf4j/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-ext/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-jcl/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-jdk14/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-nop/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-simple/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.yaml/groupIdartifactIdsnakeyaml/artifactIdversion${snakeyaml.version}/version/dependencydependencygroupIdorg.apache.solr/groupIdartifactIdsolr-analysis-extras/artifactIdversion${solr.version}/version/dependencydependencygroupIdorg.apache.solr/groupIdartifactIdsolr-analytics/artifactIdversion${solr.version}/version/dependencydependencygroupIdorg.apache.solr/groupIdartifactIdsolr-cell/artifactIdversion${solr.version}/version/dependencydependencygroupIdorg.apache.solr/groupIdartifactIdsolr-core/artifactIdversion${solr.version}/version/dependencydependencygroupIdorg.apache.solr/groupIdartifactIdsolr-dataimporthandler/artifactIdversion${solr.version}/version/dependencydependencygroupIdorg.apache.solr/groupIdartifactIdsolr-dataimporthandler-extras/artifactIdversion${solr.version}/version/dependencydependencygroupIdorg.apache.solr/groupIdartifactIdsolr-langid/artifactIdversion${solr.version}/version/dependencydependencygroupIdorg.apache.solr/groupIdartifactIdsolr-ltr/artifactIdversion${solr.version}/version/dependencydependencygroupIdorg.apache.solr/groupIdartifactIdsolr-solrj/artifactIdversion${solr.version}/versionexclusionsexclusiongroupIdorg.slf4j/groupIdartifactIdjcl-over-slf4j/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.solr/groupIdartifactIdsolr-test-framework/artifactIdversion${solr.version}/version/dependencydependencygroupIdorg.apache.solr/groupIdartifactIdsolr-velocity/artifactIdversion${solr.version}/version/dependencydependencygroupIdorg.springframework.amqp/groupIdartifactIdspring-amqp/artifactIdversion${spring-amqp.version}/version/dependencydependencygroupIdorg.springframework.amqp/groupIdartifactIdspring-rabbit/artifactIdversion${spring-amqp.version}/version/dependencydependencygroupIdorg.springframework.amqp/groupIdartifactIdspring-rabbit-stream/artifactIdversion${spring-amqp.version}/version/dependencydependencygroupIdorg.springframework.amqp/groupIdartifactIdspring-rabbit-junit/artifactIdversion${spring-amqp.version}/version/dependencydependencygroupIdorg.springframework.amqp/groupIdartifactIdspring-rabbit-test/artifactIdversion${spring-amqp.version}/version/dependencydependencygroupIdorg.springframework.batch/groupIdartifactIdspring-batch-core/artifactIdversion${spring-batch.version}/version/dependencydependencygroupIdorg.springframework.batch/groupIdartifactIdspring-batch-infrastructure/artifactIdversion${spring-batch.version}/version/dependencydependencygroupIdorg.springframework.batch/groupIdartifactIdspring-batch-integration/artifactIdversion${spring-batch.version}/version/dependencydependencygroupIdorg.springframework.batch/groupIdartifactIdspring-batch-test/artifactIdversion${spring-batch.version}/version/dependencydependencygroupIdorg.springframework.hateoas/groupIdartifactIdspring-hateoas/artifactIdversion${spring-hateoas.version}/version/dependencydependencygroupIdorg.springframework.kafka/groupIdartifactIdspring-kafka/artifactIdversion${spring-kafka.version}/version/dependencydependencygroupIdorg.springframework.kafka/groupIdartifactIdspring-kafka-test/artifactIdversion${spring-kafka.version}/version/dependencydependencygroupIdorg.springframework.ldap/groupIdartifactIdspring-ldap-core/artifactIdversion${spring-ldap.version}/version/dependencydependencygroupIdorg.springframework.ldap/groupIdartifactIdspring-ldap-core-tiger/artifactIdversion${spring-ldap.version}/version/dependencydependencygroupIdorg.springframework.ldap/groupIdartifactIdspring-ldap-ldif-batch/artifactIdversion${spring-ldap.version}/version/dependencydependencygroupIdorg.springframework.ldap/groupIdartifactIdspring-ldap-ldif-core/artifactIdversion${spring-ldap.version}/version/dependencydependencygroupIdorg.springframework.ldap/groupIdartifactIdspring-ldap-odm/artifactIdversion${spring-ldap.version}/version/dependencydependencygroupIdorg.springframework.ldap/groupIdartifactIdspring-ldap-test/artifactIdversion${spring-ldap.version}/version/dependencydependencygroupIdorg.springframework.restdocs/groupIdartifactIdspring-restdocs-asciidoctor/artifactIdversion${spring-restdocs.version}/version/dependencydependencygroupIdorg.springframework.restdocs/groupIdartifactIdspring-restdocs-core/artifactIdversion${spring-restdocs.version}/version/dependencydependencygroupIdorg.springframework.restdocs/groupIdartifactIdspring-restdocs-mockmvc/artifactIdversion${spring-restdocs.version}/version/dependencydependencygroupIdorg.springframework.restdocs/groupIdartifactIdspring-restdocs-restassured/artifactIdversion${spring-restdocs.version}/version/dependencydependencygroupIdorg.springframework.restdocs/groupIdartifactIdspring-restdocs-webtestclient/artifactIdversion${spring-restdocs.version}/version/dependencydependencygroupIdorg.springframework.retry/groupIdartifactIdspring-retry/artifactIdversion${spring-retry.version}/version/dependencydependencygroupIdorg.springframework.ws/groupIdartifactIdspring-ws-core/artifactIdversion${spring-ws.version}/version/dependencydependencygroupIdorg.springframework.ws/groupIdartifactIdspring-ws-security/artifactIdversion${spring-ws.version}/version/dependencydependencygroupIdorg.springframework.ws/groupIdartifactIdspring-ws-support/artifactIdversion${spring-ws.version}/version/dependencydependencygroupIdorg.springframework.ws/groupIdartifactIdspring-ws-test/artifactIdversion${spring-ws.version}/version/dependencydependencygroupIdorg.springframework.ws/groupIdartifactIdspring-xml/artifactIdversion${spring-ws.version}/version/dependencydependencygroupIdorg.xerial/groupIdartifactIdsqlite-jdbc/artifactIdversion${sqlite-jdbc.version}/version/dependencydependencygroupIdcom.sun.mail/groupIdartifactIdjakarta.mail/artifactIdversion${sun-mail.version}/version/dependencydependencygroupIdorg.thymeleaf/groupIdartifactIdthymeleaf/artifactIdversion${thymeleaf.version}/version/dependencydependencygroupIdorg.thymeleaf/groupIdartifactIdthymeleaf-spring5/artifactIdversion${thymeleaf.version}/version/dependencydependencygroupIdcom.github.mxab.thymeleaf.extras/groupIdartifactIdthymeleaf-extras-data-attribute/artifactIdversion${thymeleaf-extras-data-attribute.version}/version/dependencydependencygroupIdorg.thymeleaf.extras/groupIdartifactIdthymeleaf-extras-java8time/artifactIdversion${thymeleaf-extras-java8time.version}/version/dependencydependencygroupIdorg.thymeleaf.extras/groupIdartifactIdthymeleaf-extras-springsecurity5/artifactIdversion${thymeleaf-extras-springsecurity.version}/version/dependencydependencygroupIdnz.net.ultraq.thymeleaf/groupIdartifactIdthymeleaf-layout-dialect/artifactIdversion${thymeleaf-layout-dialect.version}/version/dependencydependencygroupIdorg.apache.tomcat/groupIdartifactIdtomcat-annotations-api/artifactIdversion${tomcat.version}/version/dependencydependencygroupIdorg.apache.tomcat/groupIdartifactIdtomcat-jdbc/artifactIdversion${tomcat.version}/version/dependencydependencygroupIdorg.apache.tomcat/groupIdartifactIdtomcat-jsp-api/artifactIdversion${tomcat.version}/version/dependencydependencygroupIdorg.apache.tomcat.embed/groupIdartifactIdtomcat-embed-core/artifactIdversion${tomcat.version}/version/dependencydependencygroupIdorg.apache.tomcat.embed/groupIdartifactIdtomcat-embed-el/artifactIdversion${tomcat.version}/version/dependencydependencygroupIdorg.apache.tomcat.embed/groupIdartifactIdtomcat-embed-jasper/artifactIdversion${tomcat.version}/version/dependencydependencygroupIdorg.apache.tomcat.embed/groupIdartifactIdtomcat-embed-websocket/artifactIdversion${tomcat.version}/version/dependencydependencygroupIdcom.unboundid/groupIdartifactIdunboundid-ldapsdk/artifactIdversion${unboundid-ldapsdk.version}/version/dependencydependencygroupIdio.undertow/groupIdartifactIdundertow-core/artifactIdversion${undertow.version}/version/dependencydependencygroupIdio.undertow/groupIdartifactIdundertow-servlet/artifactIdversion${undertow.version}/version/dependencydependencygroupIdio.undertow/groupIdartifactIdundertow-websockets-jsr/artifactIdversion${undertow.version}/version/dependencydependencygroupIdorg.webjars/groupIdartifactIdwebjars-locator-core/artifactIdversion${webjars-locator-core.version}/version/dependencydependencygroupIdwsdl4j/groupIdartifactIdwsdl4j/artifactIdversion${wsdl4j.version}/version/dependencydependencygroupIdorg.xmlunit/groupIdartifactIdxmlunit-assertj/artifactIdversion${xmlunit2.version}/version/dependencydependencygroupIdorg.xmlunit/groupIdartifactIdxmlunit-core/artifactIdversion${xmlunit2.version}/version/dependencydependencygroupIdorg.xmlunit/groupIdartifactIdxmlunit-legacy/artifactIdversion${xmlunit2.version}/version/dependencydependencygroupIdorg.xmlunit/groupIdartifactIdxmlunit-matchers/artifactIdversion${xmlunit2.version}/version/dependencydependencygroupIdorg.xmlunit/groupIdartifactIdxmlunit-placeholders/artifactIdversion${xmlunit2.version}/version/dependencydependencygroupIdcom.datastax.oss/groupIdartifactIdjava-driver-bom/artifactIdversion${cassandra-driver.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdio.dropwizard.metrics/groupIdartifactIdmetrics-bom/artifactIdversion${dropwizard-metrics.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.codehaus.groovy/groupIdartifactIdgroovy-bom/artifactIdversion${groovy.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.infinispan/groupIdartifactIdinfinispan-bom/artifactIdversion${infinispan.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.fasterxml.jackson/groupIdartifactIdjackson-bom/artifactIdversion${jackson-bom.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.glassfish.jersey/groupIdartifactIdjersey-bom/artifactIdversion${jersey.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.eclipse.jetty/groupIdartifactIdjetty-bom/artifactIdversion${jetty.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.junit/groupIdartifactIdjunit-bom/artifactIdversion${junit-jupiter.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.jetbrains.kotlin/groupIdartifactIdkotlin-bom/artifactIdversion${kotlin.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.jetbrains.kotlinx/groupIdartifactIdkotlinx-coroutines-bom/artifactIdversion${kotlin-coroutines.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-bom/artifactIdversion${log4j2.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdio.micrometer/groupIdartifactIdmicrometer-bom/artifactIdversion${micrometer.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-bom/artifactIdversion${netty.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.oracle.database.jdbc/groupIdartifactIdojdbc-bom/artifactIdversion${oracle-database.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdio.prometheus/groupIdartifactIdsimpleclient_bom/artifactIdversion${prometheus-client.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.querydsl/groupIdartifactIdquerydsl-bom/artifactIdversion${querydsl.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdio.r2dbc/groupIdartifactIdr2dbc-bom/artifactIdversion${r2dbc-bom.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdio.projectreactor/groupIdartifactIdreactor-bom/artifactIdversion${reactor-bom.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdio.rsocket/groupIdartifactIdrsocket-bom/artifactIdversion${rsocket.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework.data/groupIdartifactIdspring-data-bom/artifactIdversion${spring-data-bom.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-framework-bom/artifactIdversion${spring-framework.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework.integration/groupIdartifactIdspring-integration-bom/artifactIdversion${spring-integration.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework.security/groupIdartifactIdspring-security-bom/artifactIdversion${spring-security.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework.session/groupIdartifactIdspring-session-bom/artifactIdversion${spring-session-bom.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginManagementpluginsplugingroupIdorg.codehaus.mojo/groupIdartifactIdbuild-helper-maven-plugin/artifactIdversion${build-helper-maven-plugin.version}/version/pluginplugingroupIdorg.flywaydb/groupIdartifactIdflyway-maven-plugin/artifactIdversion${flyway.version}/version/pluginplugingroupIdpl.project13.maven/groupIdartifactIdgit-commit-id-plugin/artifactIdversion${git-commit-id-plugin.version}/version/pluginplugingroupIdorg.apache.johnzon/groupIdartifactIdjohnzon-maven-plugin/artifactIdversion${johnzon.version}/version/pluginplugingroupIdorg.jooq/groupIdartifactIdjooq-codegen-maven/artifactIdversion${jooq.version}/version/pluginplugingroupIdorg.jetbrains.kotlin/groupIdartifactIdkotlin-maven-plugin/artifactIdversion${kotlin.version}/version/pluginplugingroupIdorg.liquibase/groupIdartifactIdliquibase-maven-plugin/artifactIdversion${liquibase.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-antrun-plugin/artifactIdversion${maven-antrun-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-assembly-plugin/artifactIdversion${maven-assembly-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-clean-plugin/artifactIdversion${maven-clean-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion${maven-compiler-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-dependency-plugin/artifactIdversion${maven-dependency-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-deploy-plugin/artifactIdversion${maven-deploy-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-enforcer-plugin/artifactIdversion${maven-enforcer-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-failsafe-plugin/artifactIdversion${maven-failsafe-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-help-plugin/artifactIdversion${maven-help-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-install-plugin/artifactIdversion${maven-install-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-invoker-plugin/artifactIdversion${maven-invoker-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdversion${maven-jar-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-javadoc-plugin/artifactIdversion${maven-javadoc-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-resources-plugin/artifactIdversion${maven-resources-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-shade-plugin/artifactIdversion${maven-shade-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-source-plugin/artifactIdversion${maven-source-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdversion${maven-surefire-plugin.version}/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-war-plugin/artifactIdversion${maven-war-plugin.version}/version/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion2.6.13/version/pluginplugingroupIdorg.codehaus.mojo/groupIdartifactIdversions-maven-plugin/artifactIdversion${versions-maven-plugin.version}/version/pluginplugingroupIdorg.codehaus.mojo/groupIdartifactIdxml-maven-plugin/artifactIdversion${xml-maven-plugin.version}/version/plugin/plugins/pluginManagement/build
/project
其中依赖继承的数量很多我们挑选其中几个常用的进行说明
activemq消息队列的一种目前有很多更好的上位替代 commons-codec加解密/签名验签的基础依赖 hibernatehibernate框架依赖 jacksonjson处理依赖 log4j2日志管理 thymeleaf模板引擎用于视图层 org.apache.tomcatspringboot内置的tomcat版本9.0.68 org.junit测试的依赖 mysqlmysql数据库连接驱动版本8.0.31 okhttp3http请求的基础依赖包 oracle-databaseoracle数据库的驱动
2.2 spring-boot-starter-web是什么
是spring-boot场景启动器
帮我们导入了web模块正常运行所依赖的组件一些默认的配置
SpringBoot约定大于配置思想的体现
类似的starter有很多比如druid的SpringBootStarterMyBatis的starter
Spring Boot将所有的功能场景都抽取出来做成一个个的starters启动器
只需要在项目里面引入这些starter 相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器
我们在浏览器访问localhost:9090/hello本质上是一个web请求所以当然需要我们导入web相关的包
spring-boot-starter-web已经帮我们配置好了默认的依赖
xxx-starter包含了完成某一个功能模块的所有jar包无需xml开箱即用
spring-boot-starter-web-2.6.13.pom源码
?xml version1.0 encodingUTF-8?
project xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance!-- This module was also published with a richer model, Gradle metadata, --!-- which should be used instead. Do not delete the following line which --!-- is to indicate to Gradle or any Gradle module metadata file consumer --!-- that they should prefer consuming it instead. --!-- do_not_remove: published-with-gradle-metadata --modelVersion4.0.0/modelVersiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion2.6.13/versionnamespring-boot-starter-web/namedescriptionStarter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container/descriptionurlhttps://spring.io/projects/spring-boot/urlorganizationnamePivotal Software, Inc./nameurlhttps://spring.io/url/organizationlicenseslicensenameApache License, Version 2.0/nameurlhttps://www.apache.org/licenses/LICENSE-2.0/url/license/licensesdevelopersdevelopernamePivotal/nameemailinfopivotal.io/emailorganizationPivotal Software, Inc./organizationorganizationUrlhttps://www.spring.io/organizationUrl/developer/developersscmconnectionscm:git:git://github.com/spring-projects/spring-boot.git/connectiondeveloperConnectionscm:git:ssh://gitgithub.com/spring-projects/spring-boot.git/developerConnectionurlhttps://github.com/spring-projects/spring-boot/url/scmissueManagementsystemGitHub/systemurlhttps://github.com/spring-projects/spring-boot/issues/url/issueManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion2.6.13/versionscopecompile/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-json/artifactIdversion2.6.13/versionscopecompile/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-tomcat/artifactIdversion2.6.13/versionscopecompile/scope/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-web/artifactIdversion5.3.23/versionscopecompile/scope/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.3.23/versionscopecompile/scope/dependency/dependencies
/project
我们可以看到其中包括了json处理的依赖spring-boot-starter-json内嵌的tomcat依赖spring-boot-starter-tomcatsping-web依赖包含了spring-core依赖SSM项目需要导入mvc依赖spring-webmvc包含了spring-aop等依赖
其中最重要的是spring-boot-starter依赖我们可以在各种starter中看到它
?xml version1.0 encodingUTF-8?
project xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance!-- This module was also published with a richer model, Gradle metadata, --!-- which should be used instead. Do not delete the following line which --!-- is to indicate to Gradle or any Gradle module metadata file consumer --!-- that they should prefer consuming it instead. --!-- do_not_remove: published-with-gradle-metadata --modelVersion4.0.0/modelVersiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion2.6.13/versionnamespring-boot-starter/namedescriptionCore starter, including auto-configuration support, logging and YAML/descriptionurlhttps://spring.io/projects/spring-boot/urlorganizationnamePivotal Software, Inc./nameurlhttps://spring.io/url/organizationlicenseslicensenameApache License, Version 2.0/nameurlhttps://www.apache.org/licenses/LICENSE-2.0/url/license/licensesdevelopersdevelopernamePivotal/nameemailinfopivotal.io/emailorganizationPivotal Software, Inc./organizationorganizationUrlhttps://www.spring.io/organizationUrl/developer/developersscmconnectionscm:git:git://github.com/spring-projects/spring-boot.git/connectiondeveloperConnectionscm:git:ssh://gitgithub.com/spring-projects/spring-boot.git/developerConnectionurlhttps://github.com/spring-projects/spring-boot/url/scmissueManagementsystemGitHub/systemurlhttps://github.com/spring-projects/spring-boot/issues/url/issueManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot/artifactIdversion2.6.13/versionscopecompile/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-autoconfigure/artifactIdversion2.6.13/versionscopecompile/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactIdversion2.6.13/versionscopecompile/scope/dependencydependencygroupIdjakarta.annotation/groupIdartifactIdjakarta.annotation-api/artifactIdversion1.3.5/versionscopecompile/scope/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion5.3.23/versionscopecompile/scope/dependencydependencygroupIdorg.yaml/groupIdartifactIdsnakeyaml/artifactIdversion1.29/versionscopecompile/scope/dependency/dependencies
/project
3.1 SpringBootApplication注解
SpringBootApplication标注在某个类上说明这个类是SpringBoot的主配置类SpringBoot 就通过运行这个类的main方法来启动SpringBoot应用
3.1.1 注解源码分析
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package org.springframework.boot.autoconfigure;import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.context.TypeExcludeFilter;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.core.annotation.AliasFor;Target({ElementType.TYPE})
Retention(RetentionPolicy.RUNTIME)
Documented
Inherited
SpringBootConfiguration
EnableAutoConfiguration
ComponentScan(excludeFilters {Filter(type FilterType.CUSTOM,classes {TypeExcludeFilter.class}
), Filter(type FilterType.CUSTOM,classes {AutoConfigurationExcludeFilter.class}
)}
)
public interface SpringBootApplication {AliasFor(annotation EnableAutoConfiguration.class)Class?[] exclude() default {};AliasFor(annotation EnableAutoConfiguration.class)String[] excludeName() default {};AliasFor(annotation ComponentScan.class,attribute basePackages)String[] scanBasePackages() default {};AliasFor(annotation ComponentScan.class,attribute basePackageClasses)Class?[] scanBasePackageClasses() default {};AliasFor(annotation ComponentScan.class,attribute nameGenerator)Class? extends BeanNameGenerator nameGenerator() default BeanNameGenerator.class;AliasFor(annotation Configuration.class)boolean proxyBeanMethods() default true;
}
Target
Target({ElementType.TYPE})表示只能标注在类上
Retention
Retention(RetentionPolicy.RUNTIME)表示此注解可以一直保留到JVM内存中 Documented运行javadoc命令时会带上SpringBootApplication注解不标注则不会带上
Inherited
Inherited这个注解只能标注在注解上表示如果一个类用上了Inherited修饰的注解那么其子类也会继承这个注解接口和实现类的父子关系不生效不行
SpringBootConfiguration
SpringBootConfiguration加载SpringBoot的配置。继承自Configuration二者功能也一致标注当前类是配置类并会将当前类内声明的一个或多个以Bean注解标记的方法的实例纳入到spring容器中并且实例名就是方法名。
SpringBootConfiguration是springboot的注解而Configuration是spring的注解
纳入spring容器的方式是通过动态代理proxyBeanMethods即是此含义CGLIB
更详细的解释Spring框架中的Configuration参数proxyBeanMethods
EnableAutoConfiguration
EnableAutoConfigurationSpringBoot有两大核心依赖大于配置自动装配EnableAutoConfiguration即为完成自动装配的核心注解(开启自动配置功能))
当spring boot扫描到EnableAutoConfiguration注解时则会将spring-boot-autoconfigure.jar/META-INF/spring.factories文件中org.springframework.boot.autoconfigure.EnableAutoConfiguration对应的value里的所有xxxConfiguration类加载到IOC容器中。而xxxAutoConfiguration类一般都会有ConditionalOnxxx注解通过这些条件注解来判断是否真正的创建xxxConfiguration对象。spring boot的各种spring-boot-starter-xxx.jar也正是居于此注解来达到自动装配的目的。 # Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\
org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\
org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration,\
org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration,\
org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration,\
org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration,\
org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.couchbase.CouchbaseReactiveDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.couchbase.CouchbaseReactiveRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.elasticsearch.ReactiveElasticsearchRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.elasticsearch.ReactiveElasticsearchRestClientAutoConfiguration,\
org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.ldap.LdapRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.mongo.MongoReactiveDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.mongo.MongoReactiveRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.neo4j.Neo4jReactiveDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.neo4j.Neo4jReactiveRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,\
org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration,\
org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration,\
org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration,\
org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration,\
org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\
org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration,\
org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration,\
org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,\
org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration,\
org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration,\
org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration,\
org.springframework.boot.autoconfigure.hazelcast.HazelcastJpaDependencyAutoConfiguration,\
org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration,\
org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration,\
org.springframework.boot.autoconfigure.influx.InfluxDbAutoConfiguration,\
org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration,\
org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration,\
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\
org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration,\
org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\
org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration,\
org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration,\
org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration,\
org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration,\
org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration,\
org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration,\
org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration,\
org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration,\
org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration,\
org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration,\
org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\
org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration,\
org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration,\
org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration,\
org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\
org.springframework.boot.autoconfigure.mongo.MongoReactiveAutoConfiguration,\
org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration,\
org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration,\
org.springframework.boot.autoconfigure.netty.NettyAutoConfiguration,\
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,\
org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration,\
org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration,\
org.springframework.boot.autoconfigure.r2dbc.R2dbcTransactionManagerAutoConfiguration,\
org.springframework.boot.autoconfigure.rsocket.RSocketMessagingAutoConfiguration,\
org.springframework.boot.autoconfigure.rsocket.RSocketRequesterAutoConfiguration,\
org.springframework.boot.autoconfigure.rsocket.RSocketServerAutoConfiguration,\
org.springframework.boot.autoconfigure.rsocket.RSocketStrategiesAutoConfiguration,\
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration,\
org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration,\
org.springframework.boot.autoconfigure.security.servlet.SecurityFilterAutoConfiguration,\
org.springframework.boot.autoconfigure.security.reactive.ReactiveSecurityAutoConfiguration,\
org.springframework.boot.autoconfigure.security.reactive.ReactiveUserDetailsServiceAutoConfiguration,\
org.springframework.boot.autoconfigure.security.rsocket.RSocketSecurityAutoConfiguration,\
org.springframework.boot.autoconfigure.security.saml2.Saml2RelyingPartyAutoConfiguration,\
org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration,\
org.springframework.boot.autoconfigure.session.SessionAutoConfiguration,\
org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration,\
org.springframework.boot.autoconfigure.security.oauth2.client.reactive.ReactiveOAuth2ClientAutoConfiguration,\
org.springframework.boot.autoconfigure.security.oauth2.resource.servlet.OAuth2ResourceServerAutoConfiguration,\
org.springframework.boot.autoconfigure.security.oauth2.resource.reactive.ReactiveOAuth2ResourceServerAutoConfiguration,\
org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration,\
org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration,\
org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration,\
org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration,\
org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration,\
org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration,\
org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration,\
org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration,\
org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration,\
org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration,\
org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration,\
org.springframework.boot.autoconfigure.web.reactive.ReactiveMultipartAutoConfiguration,\
org.springframework.boot.autoconfigure.web.reactive.ReactiveWebServerFactoryAutoConfiguration,\
org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration,\
org.springframework.boot.autoconfigure.web.reactive.WebSessionIdResolverAutoConfiguration,\
org.springframework.boot.autoconfigure.web.reactive.error.ErrorWebFluxAutoConfiguration,\
org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration,\
org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration,\
org.springframework.boot.autoconfigure.websocket.reactive.WebSocketReactiveAutoConfiguration,\
org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration,\
org.springframework.boot.autoconfigure.websocket.servlet.WebSocketMessagingAutoConfiguration,\
org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration,\
org.springframework.boot.autoconfigure.webservices.client.WebServiceTemplateAutoConfiguration这些标签都是可以ctrl点进去的每一个都对应一个xxxAutoConfiguration配置类这些类在这些包中
Target({ElementType.TYPE})
Retention(RetentionPolicy.RUNTIME)
Documented
Inherited
AutoConfigurationPackage
Import({AutoConfigurationImportSelector.class})
public interface EnableAutoConfiguration {String ENABLED_OVERRIDE_PROPERTY spring.boot.enableautoconfiguration;Class?[] exclude() default {};String[] excludeName() default {};
}AutoConfigurationPackage
AutoConfigurationPackage自动配置包导入的组件由AutoConfigurationPackages.Registrar.class决定
Target({ElementType.TYPE})
Retention(RetentionPolicy.RUNTIME)
Documented
Inherited
Import({AutoConfigurationPackages.Registrar.class})
public interface AutoConfigurationPackage {String[] basePackages() default {};Class?[] basePackageClasses() default {};
}AutoConfigurationPackages是一个抽象类Registrar是其静态内部类。
AutoConfigurationPackage注解的作用是将添加该注解的类所在的package 作为 自动配置package 进行管理。
将启动类所在的包子包都注册到自动装配包中 public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {AutoConfigurationPackages.register(registry, (String[])(new PackageImports(metadata)).getPackageNames().toArray(new String[0]));}通过元数据AnnotationMetadata获取被 Import 注解的类的注解信息即注解元数据进而获取包名将包名的string数组注册到自动导入包中
这个注解不是很重要只是定义了一些自动装配的包规则AutoConfigurationImportSelector才是完成自动装配的重点
AutoConfigurationImportSelector
Import给容器中导入一个组件 将所有需要导入的组件以全类名的方式返回这些组件就会被添加到容器中会给容器中导入非常多的自动配置类xxxAutoConfiguration就是给容器中导入这个场景需要的所有组件并配置好这些组件
将spring-boot-autoconfigure.jar/META-INF/spring.factories文件中org.springframework.boot.autoconfigure.EnableAutoConfiguration对应的value里的所有xxxConfiguration类加载到IOC容器中。而xxxAutoConfiguration类一般都会有ConditionalOnxxx注解通过这些条件注解来判断是否真正的创建xxxConfiguration对象。
自动装配原理
自动装配主要是装配两部分的bean组件本项目内的依赖jar包内的
依赖jar包又可以分为spring-boot-autoconfigure包其他
AutoConfigurationPackage注解将添加该注解的类所在的package 作为自动配置package 进行管理保存自动配置类的全限定包名以供之后的使用比如给JPA entity扫描器用来扫描开发人员通过注解Entity定义的entity类
SpringBoot启动类自动标注了该注解所以当SpringBoot应用启动时默认会将启动类所在的package作为自动配置的package提供给后续扫描bean组件的注解Controller,Mapper,Service等使用
所以AutoConfigurationPackage负责自动装配本项目内的bean组件Import(AutoConfigurationImportSelector.class)负责自动装配pom依赖项目的bean组件
SpringBoot启动的时候加载主配置类开启了自动配置功能 EnableAutoConfigurationEnableAutoConfiguration注解利用EnableAutoConfigurationImportSelector给容器中导入一些组件。查看selectImports()方法的内容
// 获取候选的配置
List configurations getCandidateConfigurations(annotationMetadata, attributes);SpringFactoriesLoader.loadFactoryNames() 扫描所有jar包类路径下 META‐INF/spring.factories 把扫描到的这些文件的内容包装成properties对象 从properties中获取到EnableAutoConfiguration.class类类名对应的值然后把他们添加在容器中 对每一个自动配置类进行自动配置功能
根据当前不同的条件判断决定这个配置类是否生效
一旦这个配置类生效这个配置类就会给容器中添加各种组件
这些组件的属性是从对应的properties类中获取的这些类里面的每一个属性又是和配置文件绑定的
约定大于配置
如果有些值你没有配置的话那程序会取一个默认值换句话说能取默认值的配置就不需要配置了这个默认值就是约定。
约定可以减少很多配置
约定优于配置convention over configuration也称作按约定编程是一种软件设计范式旨在减少软件开发人员需做决定的数量获得简单的好处而又不失灵活性。
在SpringBoot中约定大于配置可以从以下几方面来理解
SpringBoot会加载大量的自动配置类这些配置类会根据ConditionalXXX注解默认加载到bean容器中自动装配默认配置
想要修改可以从resources下的application.yaml中修改配置
在spring boot中提供了一套默认配置不需要手动去写xml配置文件不写xml项目也能跑起来。
只有默认配置不能满足我们的需求时才会去修改配置自定义yaml文件 maven的默认目录结构也体现了约定大于配置的思想 /src/main/java目录用来存放java源文件src/main/resources目录用来存放资源文件如application.yml文件mybatis的*mapper.xml文件/src/test/java目录用来存放java测试文件/src/test/resources目录用来存放测试资源文件/target目录为项目的输出位置