当你创建好spring boot项目后,你可以在你的pom.xml文件中发现:
org.springframework.boot
spring-boot-starter-parent
2.1.5.RELEASE
一段这种配置,这个是spring boot所独有的,打开这个链接可以看这个配置的pom的具体信息
可以从中看到如下的新特性:
(1)Java 8被作为默认的编译层级
(2)使用UTF-8作为字符集编码
(3)一个依赖管理模块,这部分可以从spring boot的依赖pom中继承,其中包含了共同依赖的版本信息,当你在自己pom里面使用的时候,可以忽略掉这些版本
。
(4)存在一个repackage
,具体信息如下:
repackage
repackage
***可以理解为重新打包命令??***?
(5)合理的资源筛选
(6)合理的插件配置
(7)对于application.properties
或者application.yml
合理的资源筛选,当然也包含一些具体的配置文件,比如application-dev.properties
。
spring boot project的所有依赖配置
它里面包含了,那些所依赖的其他依赖的版本号。
关于pom中的
使用场景:当我们不想使用从spring boot project中继承下来的依赖的时候,我们可以使用
来引入想使用的依赖,但是需要注意的是,你需要把你要引入的依赖放在spring-boot-starter-parent
的前面,如下所示:
org.springframework.data
spring-data-releasetrain
Fowler-SR2
pom
import
org.springframework.boot
spring-boot-dependencies
2.1.5.RELEASE
pom
import
关于
目前只掌握这么一丢丢,以后研究明白了再更新。
spring boot
的pom.xml
文件中的maven plugin
:
org.springframework.boot
spring-boot-maven-plugin
可以进行如上的配置,你可以使用其来对项目进行打包,让其成为一个可执行的JAR文件(当然也可以是WAR包,我们目前一直是WAR包)。
一般来说,我们的应用中会存在一个Application.java
的类,用来启动和初始化我们的project
,官网推荐我们在spring boot
项目初始化好后,自己建package
,不要让你的*.java
文件都裸在../src/main/java
目录下面,一般我们会将Application.java
文件放在./src/main/java
下面,具体的文件内容如下所示,下面只是一个简单示例:
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
从上面的代码中我们可以看到,我们在Application.java
类上面使用了注解@SpringBootApplication
,这里简单说一下spring boot
如何自动装配的,通过使用@SpringBootApplication
注解可以达到自动装配的效果,其中该注解上面又有两个比较重要的注解@SpringBootConfiguration @EnableAutoConfiguration
,其中@SpringBootConfiguration
注解中存在一个@Configuration
注解,@EnableAutoConfiguration
这个注解应该是自动装配的关键,它里面有存在这样的两个注解@AutoConfigurationPackage @Import(AutoConfigurationImportSelector.class)
。
所以想要达到自动装配,你就需要在@Configuration
那个类上面加@EnableAutoConfiguration
或者@SpringBootApplication
注解。
对于上面这段程序,如果你不想使用@SpringBootApplication
注解,那么你也可以使用@EnableAutoConfiguration
和@ComponentScan
注解来替代。
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
@EnableAutoConfiguration
@ComponentScan(basePackages = "com.example.demo")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
启动效果图:
D:\Java8\jdk1.8.0_211\bin\java.exe -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2019.1.1\lib\idea_rt.jar=50626:C:\Program Files\JetBrains\IntelliJ IDEA 2019.1.1\bin" -Dfile.encoding=UTF-8 -classpath D:\Java8\jdk1.8.0_211\jre\lib\charsets.jar;D:\Java8\jdk1.8.0_211\jre\lib\deploy.jar;D:\Java8\jdk1.8.0_211\jre\lib\ext\access-bridge-64.jar;D:\Java8\jdk1.8.0_211\jre\lib\ext\cldrdata.jar;D:\Java8\jdk1.8.0_211\jre\lib\ext\dnsns.jar;D:\Java8\jdk1.8.0_211\jre\lib\ext\jaccess.jar;D:\Java8\jdk1.8.0_211\jre\lib\ext\jfxrt.jar;D:\Java8\jdk1.8.0_211\jre\lib\ext\localedata.jar;D:\Java8\jdk1.8.0_211\jre\lib\ext\nashorn.jar;D:\Java8\jdk1.8.0_211\jre\lib\ext\sunec.jar;D:\Java8\jdk1.8.0_211\jre\lib\ext\sunjce_provider.jar;D:\Java8\jdk1.8.0_211\jre\lib\ext\sunmscapi.jar;D:\Java8\jdk1.8.0_211\jre\lib\ext\sunpkcs11.jar;D:\Java8\jdk1.8.0_211\jre\lib\ext\zipfs.jar;D:\Java8\jdk1.8.0_211\jre\lib\javaws.jar;D:\Java8\jdk1.8.0_211\jre\lib\jce.jar;D:\Java8\jdk1.8.0_211\jre\lib\jfr.jar;D:\Java8\jdk1.8.0_211\jre\lib\jfxswt.jar;D:\Java8\jdk1.8.0_211\jre\lib\jsse.jar;D:\Java8\jdk1.8.0_211\jre\lib\management-agent.jar;D:\Java8\jdk1.8.0_211\jre\lib\plugin.jar;D:\Java8\jdk1.8.0_211\jre\lib\resources.jar;D:\Java8\jdk1.8.0_211\jre\lib\rt.jar;D:\demo\target\classes;C:\maven\mvn_repo3.0\org\springframework\boot\spring-boot-starter-web\2.1.5.RELEASE\spring-boot-starter-web-2.1.5.RELEASE.jar;C:\maven\mvn_repo3.0\org\springframework\boot\spring-boot-starter\2.1.5.RELEASE\spring-boot-starter-2.1.5.RELEASE.jar;C:\maven\mvn_repo3.0\org\springframework\boot\spring-boot\2.1.5.RELEASE\spring-boot-2.1.5.RELEASE.jar;C:\maven\mvn_repo3.0\org\springframework\boot\spring-boot-autoconfigure\2.1.5.RELEASE\spring-boot-autoconfigure-2.1.5.RELEASE.jar;C:\maven\mvn_repo3.0\org\springframework\boot\spring-boot-starter-logging\2.1.5.RELEASE\spring-boot-starter-logging-2.1.5.RELEASE.jar;C:\maven\mvn_repo3.0\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\maven\mvn_repo3.0\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\maven\mvn_repo3.0\org\apache\logging\log4j\log4j-to-slf4j\2.11.2\log4j-to-slf4j-2.11.2.jar;C:\maven\mvn_repo3.0\org\apache\logging\log4j\log4j-api\2.11.2\log4j-api-2.11.2.jar;C:\maven\mvn_repo3.0\org\slf4j\jul-to-slf4j\1.7.26\jul-to-slf4j-1.7.26.jar;C:\maven\mvn_repo3.0\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;C:\maven\mvn_repo3.0\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;C:\maven\mvn_repo3.0\org\springframework\boot\spring-boot-starter-json\2.1.5.RELEASE\spring-boot-starter-json-2.1.5.RELEASE.jar;C:\maven\mvn_repo3.0\com\fasterxml\jackson\core\jackson-databind\2.9.8\jackson-databind-2.9.8.jar;C:\maven\mvn_repo3.0\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;C:\maven\mvn_repo3.0\com\fasterxml\jackson\core\jackson-core\2.9.8\jackson-core-2.9.8.jar;C:\maven\mvn_repo3.0\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.8\jackson-datatype-jdk8-2.9.8.jar;C:\maven\mvn_repo3.0\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.8\jackson-datatype-jsr310-2.9.8.jar;C:\maven\mvn_repo3.0\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.8\jackson-module-parameter-names-2.9.8.jar;C:\maven\mvn_repo3.0\org\springframework\boot\spring-boot-starter-tomcat\2.1.5.RELEASE\spring-boot-starter-tomcat-2.1.5.RELEASE.jar;C:\maven\mvn_repo3.0\org\apache\tomcat\embed\tomcat-embed-core\9.0.19\tomcat-embed-core-9.0.19.jar;C:\maven\mvn_repo3.0\org\apache\tomcat\embed\tomcat-embed-el\9.0.19\tomcat-embed-el-9.0.19.jar;C:\maven\mvn_repo3.0\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.19\tomcat-embed-websocket-9.0.19.jar;C:\maven\mvn_repo3.0\org\hibernate\validator\hibernate-validator\6.0.16.Final\hibernate-validator-6.0.16.Final.jar;C:\maven\mvn_repo3.0\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;C:\maven\mvn_repo3.0\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;C:\maven\mvn_repo3.0\com\fasterxml\classmate\1.4.0\classmate-1.4.0.jar;C:\maven\mvn_repo3.0\org\springframework\spring-web\5.1.7.RELEASE\spring-web-5.1.7.RELEASE.jar;C:\maven\mvn_repo3.0\org\springframework\spring-beans\5.1.7.RELEASE\spring-beans-5.1.7.RELEASE.jar;C:\maven\mvn_repo3.0\org\springframework\spring-webmvc\5.1.7.RELEASE\spring-webmvc-5.1.7.RELEASE.jar;C:\maven\mvn_repo3.0\org\springframework\spring-aop\5.1.7.RELEASE\spring-aop-5.1.7.RELEASE.jar;C:\maven\mvn_repo3.0\org\springframework\spring-context\5.1.7.RELEASE\spring-context-5.1.7.RELEASE.jar;C:\maven\mvn_repo3.0\org\springframework\spring-expression\5.1.7.RELEASE\spring-expression-5.1.7.RELEASE.jar;C:\maven\mvn_repo3.0\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;C:\maven\mvn_repo3.0\org\springframework\spring-core\5.1.7.RELEASE\spring-core-5.1.7.RELEASE.jar;C:\maven\mvn_repo3.0\org\springframework\spring-jcl\5.1.7.RELEASE\spring-jcl-5.1.7.RELEASE.jar com.example.demo.Application
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.5.RELEASE)
2019-06-13 21:50:35.575 INFO 17248 --- [ main] com.example.demo.Application : Starting Application on DESKTOP-J2GV336 with PID 17248 (D:\demo\target\classes started by danis in D:\demo)
2019-06-13 21:50:35.581 INFO 17248 --- [ main] com.example.demo.Application : No active profile set, falling back to default profiles: default
2019-06-13 21:50:39.213 INFO 17248 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2019-06-13 21:50:39.331 INFO 17248 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2019-06-13 21:50:39.331 INFO 17248 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.19]
2019-06-13 21:50:39.600 INFO 17248 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-06-13 21:50:39.601 INFO 17248 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3917 ms
2019-06-13 21:50:40.187 INFO 17248 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2019-06-13 21:50:40.538 INFO 17248 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2019-06-13 21:50:40.544 INFO 17248 --- [ main] com.example.demo.Application : Started Application in 6.322 seconds (JVM running for 9.602)
可以看出来启动成功,花费6.32秒。