/*本人菜鸟一只,刚开始学习spring boot,按照导师给的学习计划整理的学习内容,希望能对和我一样是菜鸟,刚学习spring boot的童鞋有帮助。由于菜鸟一只,以下内容没有能力原创,里面的内容都是各种百度整理出来的(东拼西凑),所以作者数量太多,不方便注明,如有冒犯,我立马删帖。请各位大佬多多海涵!*/
1、熟悉目录结构
src
src/main/java:存放代码;主程序入口DemoApplication
resource
src/main/resources:资源配置目录
application.yml:项目配置文件
static:静态资源目录,存放 html css js 图片等资源 (访问方式:http://localhost:8080/js/main.js)
templates:视图模板目录 存放 jsp thymeleaf等模板文件
target
target是idea默认的编译路径,用来存放:项目的文件和目录、jar包、war包、class文件等。
pom.xml
项目对象模型(Project Object Model),包括所有的项目信息。用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。
2、pom.xml依赖的各种start作用
spring-boot-starter-parent:管理boot需要的所有依赖,从而统一各种jar的版本号,避免版本不一致而出现的问题。
spring-boot-starter-web:提供Web开发场景所需的底层所有依赖。
3、程序入口及其继承的对象
主程序入口:DemoApplication
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(SmybatisApplication.class, args);
}
}
@SpringBootApplication源代码
@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 {
···
}
SpringBoot启动流程:
-
SpringApplication类初始化
-
调用SpringAppliation的run方法
-
调用SpringAppliation的run方法中的orepareContext()方法
-
IoC容器初始化
-
SpringBoot自动装配
-
IoC容器依赖注入
4、打包方式及配置
war打包方式
pom.xml配置
<packaging>war</packaging>
<build>
<finalName>api</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
运行mvn package生成war包,然后放到Tomcat中就可以启动了。但是单纯这样操作不能成功运行,会报错,需要通过编码指定Tomcat容器启动,需要修改项目的入口程序DemoApplication。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
}
上述代码中,DemoApplication类继承了SpringBootServletInitializer,并重写configure方法,目的是告诉外部Tomcat,启动时执行该方法,然后在该方法体内指定应用程序入口为DemoApplication类,如果通过外部Tomcat启动Spring boot应用,则其配置文件设置的端口及contextPath将无效。这时,应用程序的启动端口即是Tomcat的启动端口,contextPath和war包的文件名相同。
jar打包方式
pom.xml配置
<packaging>jar</packaging>
<build>
<finalName>api</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<!-- 指定 Main 方法所在类 -->
<mainClass>com.lynn.DemoApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>UTF-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
在pom.xml内通过配置maven plugin,执行mvn package打包命令时会将src/main/java、src/main/resources目录下的全部文件进行打包,最终生成一个xx.jar的文件,由于SpringBoot打包时默认会将Tomcat的相关依赖一并放入到xx.jar内,所以通过java -jar xx.jar命令行的方式可以直接运行。