菜鸟学习SpringBoot——(一)构建一个简单的单体Springboot项目

本文是菜鸟学习SpringBoot的第一篇,主要介绍了SpringBoot项目的目录结构,pom.xml文件的作用,程序入口及启动流程,以及war和jar两种打包方式的配置。适合初学者了解SpringBoot的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*本人菜鸟一只,刚开始学习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命令行的方式可以直接运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值