【SpringBoot Web框架实战教程(开源)】01 使用 pom 方式创建 SpringBoot 第一个项目

导读

这是一系列关于 SpringBoot Web框架实战 的教程,从项目的创建,到一个完整的 web 框架(包括异常处理、拦截器、context 上下文等);从0开始,到一个可以直接运用在生产环境中的web框架。而且所有源码均开源:https://github.com/xiongxianhe/springboot


注:本系列项目的构建工具均使用 IntelliJ IDEA

1. 创建项目

  • 选择 Maven Archetype

  • 在 Archetype 中选择 org.apache.maven.archetypes:maven-archetype-quickstart

  • 其他属性内容,根据实际情况进行填写,如下图:

2. 配置 pom.xml 文件

等待 maven 加载相关依赖后,呈现如下相关文件结构:

打开 pom.xml 文件,默认文件内容如下:

xml 复制代码
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.jdz</groupId>
  <artifactId>usepom</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>usepom</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

增加 SpringBoot 相关配置

主要配置:
xml 复制代码
<!--应用的父项目-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.3</version>
</parent>

<dependencies>
    <!-- 这里的依赖没有指明版本,这是由于在spring-boot-dependencies中都已经指明了版本 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
相关插件
xml 复制代码
<!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
<build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
</build>

完整的 pom.xml 内容:

xml 复制代码
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.jdz</groupId>
  <artifactId>usepom</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>usepom</name>
  <url>http://maven.apache.org</url>

  <!--应用的父项目-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.3</version>
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <!-- 这里的依赖没有指明版本,这是由于在spring-boot-dependencies中都已经指明了版本 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

pom.xml 配置好,更新 maven,如下图:

3. 编写代码

main 入口文件
java 复制代码
package org.jdz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Hello world!
 *
 */
@SpringBootApplication
public class App
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        SpringApplication.run(App.class, args);
    }
}

@SpringBootApplication

@SpringBootApplication用来标注应用的主配置类,那么SpringBoot就可以通过启动这个主配置类的main方法来启动SpringBoot应用。

到此,一个 SpringBoot 项目就已创建完成,点击运行,输入如下图:

SpringBoot 内置 Tomcat 并启动 8080 为 web 端口,在浏览器上访问 http://localhost:8080/ , 出现如下图所示,即 SpringBoot 已正常启动

4. 输出 hello springboot

controller 类编写

  • 新建 controller 包
  • 在 controller 包下新建 HelloController.java

注:

  1. 新建 controller 包 不是必须
  2. 类文件名 HelloController 的命名格式不是必须
  3. 只需要 Controller 类中的类名增加 @Controller 即可
java 复制代码
package org.jdz.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello Spring Boot.";
    }
}

重启启动项目,并访问: http://localhost:8080/hello ,此时页面输出:

html 复制代码
Hello Spring Boot.

完整的目录结构:

app
├─pom.xml
├─target
|   ├─usepom-1.0-SNAPSHOT.jar
|   ├─usepom-1.0-SNAPSHOT.jar.original
|   ├─test-classes
|   |      ├─org
|   |      |  ├─jdz
|   |      |  |  └AppTest.class
|   ├─surefire-reports
|   |        ├─org.jdz.AppTest.txt
|   |        └TEST-org.jdz.AppTest.xml
|   ├─maven-status
|   |      ├─maven-compiler-plugin
|   |      |           ├─testCompile
|   |      |           |      ├─default-testCompile
|   |      |           |      |          ├─createdFiles.lst
|   |      |           |      |          └inputFiles.lst
|   |      |           ├─compile
|   |      |           |    ├─default-compile
|   |      |           |    |        ├─createdFiles.lst
|   |      |           |    |        └inputFiles.lst
|   ├─maven-archiver
|   |       └pom.properties
|   ├─generated-test-sources
|   |           ├─test-annotations
|   ├─generated-sources
|   |         ├─annotations
|   ├─classes
|   |    ├─org
|   |    |  ├─jdz
|   |    |  |  ├─App.class
|   |    |  |  ├─controller
|   |    |  |  |     └HelloController.class
├─src
|  ├─test
|  |  ├─java
|  |  |  ├─org
|  |  |  |  ├─jdz
|  |  |  |  |  └AppTest.java
|  ├─main
|  |  ├─java
|  |  |  ├─org
|  |  |  |  ├─jdz
|  |  |  |  |  ├─App.java
|  |  |  |  |  ├─controller
|  |  |  |  |  |     └HelloController.java

源码: https://github.com/xiongxianhe/springboot.git

相关推荐
Wang's Blog30 分钟前
Webpack: 持久化缓存大幅提升构建性能
前端·缓存·webpack
程序员储物箱32 分钟前
Vue报错:Module not found: Error: Can‘t resolve ‘less-loader‘ in ‘文件地址‘
前端·vue
乐吾乐科技34 分钟前
【国产开源可视化引擎Meta2d.js】锚点
前端·编辑器·web·数据可视化·大屏端
邹霍梁@开源软件GoodERP1 小时前
【Odoo开源ERP】别把ERP与进销存软件混为一谈
python·开源
Her...1 小时前
electron教程(一)创建项目
前端·javascript·electron
logstach2 小时前
QML-Grid和OpacityMask
前端·qml
C+ 安口木3 小时前
前端代码规范 - 日志打印规范
前端·代码规范
oNuoyi3 小时前
定位线上同步锁仍然重复扣费的Bug定位及Redis分布式锁解决方案
java·spring boot·redis·分布式
Jesse_Kyrie3 小时前
配置windows环境下独立浏览器爬虫方案【不依赖系统环境与chrome】
前端·chrome·爬虫·python·scrapy
泡芙冰淇淋ya3 小时前
【Spring Boot】简单了解spring boot支持的三种服务器
spring boot