从 0 开始创建 SpringBoot 项目

从 0 开始创建 SpringBoot 项目

  • 从 0 开始创建 SpringBoot 项目
    • 环境准备
    • 创建项目
    • 项目目录结构及说明
    • 编写代码
    • 参考

从 0 开始创建 SpringBoot 项目

环境准备

  • 操作系统:Windows 10
  • IDE:IntelliJ IDEA 2023.3.1
  • Java 版本:jdk1.8

工具网盘链接:Java 开发工具合集

创建项目

下面用最新的 IntelliJ IDEA 2023.3.1 演示新建一个 SpringBoot 工程。

选择 Spring Initializr,类型选 Maven,JDK 选 1.8,版本选 8。

在这里插入图片描述

注意这里换了 Spring Initializr 服务器 URL,默认的是不支持 Java 版本 8 的,只能选新的 21 或者 17,这会与 jdk1.8 不兼容。我们换成阿里云镜像网址:

在这里插入图片描述

选择 Spring Boot 版本及依赖,创建 Spring Web 工程:

Spring Boot 版本选择 2.7.6,依赖先添加 Lombok、Spring Web,之后自己按需添加。

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>demo</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.7.6</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.7.6</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.7.6</version><configuration><mainClass>com.example.demo.DemoApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

点击 Finish,如果是第一次创建,在右下角会提示正在下载相关依赖,项目创建完毕。

在这里插入图片描述

新建项目后,我们一般都需要配置编码,这点非常重要,很多初学者都会忘记这一步,所以要养成良好的习惯。IDEA 中,仍然是打开 File->settings ,搜索 encoding,配置一下本地的编码信息。如下所示:

在这里插入图片描述

确保设置和项目结构里的 Java 版本一致:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

项目目录结构及说明

项目结构:

在这里插入图片描述

说明:

  • src/main/java/com/example/demo:存放Java代码。
    • controller/Controller.java:在 MVC 中,它直观的对应其中的 C。
    • entity/User.java:也有人叫 PO (Persistent Object),PO 这个名字直观地看出它对应数据库中的记录,它的每一个属性都对应一个字段。
    • mapper/UserMapper.java、UserMapper.xml:它的同类是 DAO (Data Access Object),显然它是用来处理数据的,它封装了 jdbc。Mybatis 是一种半自动化的 ORM 框架,所以 UserMapper.java 是一个 interface,而非 class,具体的 SQL 语句我们写在同级目录下的同名 xml 文件中。mapper 和 DAO 是两种可以互相取代实现方式,界限没有那么绝对。
    • service/UserService.java:它显然是用来实现服务的,这里一般定义一些接口。
    • service/impl/UserServiceImpl.java:这里实现 service 中的接口,当然可以不用分化那么细,不写接口直接写一个类也是没问题的。
    • DemoApplication.java:SpringBoot 程序执行的入口,执行该程序中的 main 方法,SpringBoot项目就启动了。
  • src/main/resources
    • static:存放静态资源,如图片、CSS、JavaScript 等。
    • templates:存放Web页面的模版文件。
    • application.properties或application.yml:用于存放程序的各种依赖模块的配置信息,比如服务端口、数据库连接配置等。

编写代码

在 com.example.demo 下新建一个 package,名叫 controller。

在这个文件夹下新建一个 Java 类:SpringBootController。

输入代码:

package com.example.demo.demos.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;/*** @BelongsProject:demo* @BelongsPackage:com.example.demo.demos.controller* @Author:Uestc_Xiye* @CreateTime:2023-12-15 21:19:05*/@Controller
public class SpringBootController {@RequestMapping(value = "/springBoot/index")@ResponseBodypublic String index(){return "Hello World!";}
}

注意:新创建的类一定要位于 Application 同级目录或下级目录,否则 SpringBoot 加载不到。

运行 DemoApplication 类的 main 方法,通过查看在控制台的输出,可以看到启动 SpringBoot 框架,会启动一个内嵌的 tomcat,端口号默认为 8080,上下文根为空:

在这里插入图片描述

在浏览器输入 http://localhost:8080/springBoot/index 访问,显示以下内容,说明配置成功了!

在这里插入图片描述

参考

【IDEA】Maven 项目打包 无效的目标发行版: 17 (全)

无法访问 org.springframework.stereotype.Controller

SpringBoot版本与JDK版本的对应关系

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/277373.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT使用:一个发包机器人的提示词

发包机器人&#xff1a; 设想&#xff1a;目前项目组有n条打包线会输出多个包&#xff0c;用户想获取最新的包是比较困难的&#xff0c;难点在于 1. 分支多&#xff1a;trunk&#xff0c;release&#xff0c;outer等&#xff0c;至少有3个分支&#xff1b; 2. 多平台&#x…

Oracle MongoDB

听课的时候第一次碰到&#xff0c;可以了解一下吧&#xff0c;就直接开了墨者学院的靶场 #oracle数据库 Oracle数据库注入全方位利用 - 先知社区 这篇写的真的很好 1.判断注入点 当时找了半天没找到 看样子是找到了&#xff0c;测试一下看看 id1 and 11 时没有报错 2.判断字段…

2024中国国际大数据产业博览会年度主题征集公告

2024中国国际大数据产业博览会年度主题征集公告 中国国际大数据产业博览会&#xff08;以下简称数博会&#xff09;&#xff0c;是全球首个以大数据为主题的国家级博览会&#xff0c;由国家发展和改革委员会、工业和信息化部、国家互联网信息办公室和贵州省人民政府共同主办&am…

SQL错题集4

1.注意格式 %Y是指date的年&#xff0c;%m是指date的月 %Y-%m ’ 即为2004-01 2.查询在2025-10-15以后&#xff0c;同一个用户下单1个以上状态为购买成功的C课程或Java课程或Python课程的user_id C或Java或Python --> 缩写 in ( C,Java,Python ) in ( ) 含义为 或or 3. ca…

[渗透测试学习] Codify - HackTheBox

首先nmap扫描端口 nmap -sV -sC -p- -v --min-rate 1000 10.10.11.239扫出来三个端口&#xff0c;22端口为ssh服务&#xff0c;80端口有http服务&#xff0c;3000端口为nodejs框架 尝试访问下80端口&#xff0c;发现页面重定向 将该域名添加到hosts里 sudo vim /etc/hosts 成…

解决nuxt3生产打包以后运行服务器报错: BScroll.use is not a function

现象&#xff1a; 这个问题在开发环境不存在&#xff0c;但是在打包后的生产环境就会有这个问题 原因分析&#xff1a;从表象上看是better-scoll组件库编译似乎有问题&#xff0c;但真正的原因是better-scroll所依赖的dom元素对象不存在, 这样就导致找不到它对应的api,或者说a…

【Java 集合】ConcurrentLinkedQueue

在日常中, 我们用到的数据结构有很多: 数组, 链表, 树等, 而在这些结构中, 还有一个叫做队列的存在。 和其他的集合相同, Java 原生提供了不同的实现。 而如果我们需要一个线程安全的队列的话, 可以基于实际的场景进行选择, 比如基于数组实现同时操作上会阻塞的 ArrayBlockingQ…

Domino万物可订阅

大家好&#xff0c;才是真的好。 如果你还不知道什么是RSS&#xff0c;从V站截图一份放到这里供大家参考&#xff1a; 其实&#xff0c;Domino上也可以很简单地发布RSS站点&#xff0c;以供内部或外部用户订阅。 前面其实我们说了不少关于Notes客户端的RSS订阅功能&#xff…

ipad协议限制号版

特别声明&#xff1a;仅供学习交流 Applet显示/隐藏显示操作展开操作 POST /api/Applet/GetRandomAvatar 提取一个随机昵称和照片 POST /api/Applet/UploadAvatarImg 上传小程序身份照片 POST /api/Applet/AddAvatar 增加一个小程序身份 POST /api/Applet/OauthSdkApp 授权A…

猫粮哪个牌子质量好性价比高?分享十款主食冻干猫粮品牌排行榜!

一款好的、健康的主粮对猫整体有很大的提升&#xff0c;主食作为猫的日常饮食&#xff0c;直接关乎着小猫是否能摄入充分的营养&#xff0c;达到最佳的理想状态&#xff0c;因此对于每一位铲屎官来说&#xff0c;主食选得好不好至关重要。面对种类众多的主食&#xff0c;很多人…

最大子数组和java实现【动态规划基础练习】

12.15 最大子数组和 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4]…

优先考虑泛型

Java中的泛型&#xff08;Generics&#xff09;提供了一种参数化类型的机制&#xff0c;使得你可以编写更灵活、类型安全的代码。下面是一个例子&#xff0c;说明在Java中优先考虑泛型的好处&#xff1a; 考虑一个简单的容器类&#xff0c;它可以存储任意类型的元素&#xff0…