序
最近打算从 SpringMVC 的学习过渡到 SpringBoot 的学习,一直听说 SpringBoot 十分方便,便想探个究竟。
提示
篇幅可能较长,但这可能是最全最简单的一篇教程了,请抱着不厌其烦的态度去学习。无论你有没有 SpringMVC 的搭建基础,你都可以跟着本教程将 SpringBoot 正常驱动起来。
逐步重启测试能保证某段配置过程不出问题,请不要忽略掉文中多次要求重启的要求。
- 新建项目
File -> New - >Project...
- 选择 Spring Initlalizr
Spring Initializr -> 在右侧 Project SDK 选择你配置的 SDK(推荐 JDK1.8) -> Next
如果你的 IDEA 中没有"Spring Initializr",说明你的 IDEA 是社区版(Community Editon)的,请更换版本为 ULTIMATE。
- 配置项目属性
修改:
Group:团队名,通常填写为 com.xxx
Artifact:包名,通常填写该项目的名称
Name:项目名称
Description:项目描述
其它选项会自动配置,默认即可。
- 选择依赖库
点击“Next”后,在“Dependencies”页面中,我们勾选以下几个库:
Web -> Web
Template Engines -> Thymeleaf
SQL -> MySQL
SQL -> JDBC
SQL -> MyBatis
- 项目配置
在勾选完毕后,点击“Next”并设置“**项目名称”**和“项目所在的目录”(可默认)。
- 等待自动配置
点击“Finish”后,你会看到 IDEA 主界面的右下方有进度条在进行。如果你是第一次配置 SpringBoot 项目,这可能需要十分钟。耐心等候进度条消失后再继续进行下一步。
如果右下方出现了一个“Enable Auto-Import”选项,记得点击一下。
- 配置文件
展开左侧的 src -> main -> resources -> 编辑 application.properties:
#SpringBoot配置文件
//让SpringBoot支持热部署
spring.devtools.restart.enabled=true
#SpringBoot配置文件结束
#MyBatis配置文件
//设置数据库的连接地址和使用的Database
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/Users?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true
//设置数据库的用户名
spring.datasource.username=root
//设置数据库的密码
spring.datasource.password=root
//设置数据库的驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#Mybatis配置文件结束
#Thymeleaf配置文件
//关闭Thymeleaf的缓存
spring.thymeleaf.cache=false
//设置Thymeleaf的类型
spring.thymeleaf.servlet.content-type=text/html
//启用Thymeleaf
spring.thymeleaf.enabled=true
//设置Thymeleaf的编码
spring.thymeleaf.encoding=UTF-8
//设置Thymeleaf的模式
spring.thymeleaf.mode=HTML5
//设置Thymeleaf的目录前缀
spring.thymeleaf.prefix=classpath:/templates/
//设置Thymeleaf的目录后缀
spring.thymeleaf.suffix=.html
#Thymeleaf配置文件结束
其中的数据库配置请根据实际情况更改。
- 运行测试
至此,我们完成了大部分的配置。由于 SpringBoot 已经内置了 Tomcat,我们不需要再自行设置,点击 IDEA 右上方的“运行”按钮即可开启服务。
如果你在开启以后 SpringBoot 没有“自动关闭”,那么说明你的配置是正确的。让我们继续。
- Hello World!
现在我们可以创建一个“HelloWorld”程序了。
首先右键 src -> main -> java -> com.xxx.xxx(你自己设定的)-> New -> Package -> 填写"controller" -> OK
然后右键你刚刚新建的“controller”包,选择 New -> Java Class -> 填写“MainController” -> OK
(以上两步要求填写的内容可由你自己来定义)
新建完成后,如图所示。
如下图所示将向该类中新建一个“HelloWorld”入口:
@Controller:告知 SpringBoot 该类是控制器,控制器才能使 @RequestMapping 或 @ResponseBody 等生效;
@RequestMapping:告知控制器该注解下面的方法需要通过该注解指定的目录进行访问;
@ResponseBody:如果使用 return 返回 String 字符串,直接将字符串显示到页面上而不是将其理解为 URL 并跳转。
填写完毕后,重启 SpringBoot!我们在浏览器中打开“localhost:8080/hello”,即可看到:
- 测试 Thymeleaf
现在我们的 Controller(控制器)已经可以和用户进行正常的交互了。那么如果我们需要将该方法的内容传递到一个页面中,就需要用到 Thymeleaf。如果不理解没关系,请继续往下看:
现在我们将注意力转移到“resources”这个文件夹下,“static”中用于存放我们网页中的静态内容(CSS、JS 等),“templates”用于存放我们可以与后台进行交互的 HTML 文件。
在“templates”文件夹中新建一个“index.html”:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo测试</title>
</head>
<body>
这是一个Thymeleaf测试页面!
</body>
</html>
请注意这行:
<html xmlns:th="http://www.thymeleaf.org">
如果不加入这行,你无法在 IDEA 中获取语法提示,所以这是必需的。
重启 SpringBoot(稍后我们会将其配置为无需重启),然后在浏览器中访问“localhost:8080”测试(因为页面是 index.html,这是默认的默认页,所以不需要加入文件名):
- 从 Controller 返回到 index.html
现在,我们需要从后台返回数据到 index.html
首先,在 MainController.java 中添加一个方法:
@RequestMapping("/hi")
public ModelAndView hi() {
ModelAndView modelAndView = new ModelAndView("index");
modelAndView.addObject("result", "已连接到后台!");
return modelAndView;
}
- 为什么没有使用 @ResponseBody 注解?
首先我们不想要字符串直接返回给用户,并且我们规定返回了“ModelAndView”这个类。
- “new ModelAndView("index")”中的“index”为什么不是“index.html”?
倒回去翻一下你的配置文件“application.properties”,看看最后一行的“prefix”和“suffix”配置项,SpringBoot 会自动为你的返回值添加上前缀和后缀,所以“index”会自动被转换为“classpath:/templates/index.html”。
- “addObject”的用法?
该方法需要传递两个值,用于返回给前端。第一个值是“Key(键)”,它是独一无二的,不得有重复,前端可以按照键名来获取第二个值(“Value(值)”)。
在 index.html 的 body 中随便找个地方添加一行:
<p th:text="${result}"></p>
更多的用法不是本教程的重点,请自行学习“Thymeleaf 文档”。
运行!
继续不耐烦地重启你的 SpringBoot,然后访问“localhost:8080/hi”:
Awesome!你的 Thymeleaf 与 ModelAndView 已经正常运行了!
- 从数据库读取数据
如何在 MySQL 中建表我就不多讲了,如果不懂请翻阅入门教程。
在刚刚填写完的“application.properties”中,我们的数据库地址为:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/Users?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true
可以知道我们的数据库地址是 127.0.0.1,连接的端口是默认的 3306,使用的数据库是“Users”。
1. 建表
在“Users”数据库下,建立一个**表(Table)**名为“admin”:
该表中有两列数据:“id”和“name”,然后随便添加几行数据。
2. 新建 Mapper
右键“com.xxx.xxx” -> New -> Package -> 填写“mapper” -> OK
然后右键你刚刚新建的“mapper”包 -> New -> Java Class -> 在“Kind”中选择“Interface” -> “Name”填写为“UserMapper” -> OK
3. 修改“UserMapper”中的内容
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM admin")
List<User> getUsers();
}
@Mapper:向 SpringBoot 声明该接口是一个 MyBatis 接口
@Select:选择语句
4. 编写一个 JavaBean
我们刚刚有一句语句 List是报错的,因为我们还需要新建一个名为“User”的类作为返回数据的 Bean。(如不懂 JavaBean,请先使用百度了解)
右键“com.xxx.xxx” -> New -> Package -> 填写“dao” -> OK
右键刚刚新建的“DAO” -> New -> Java Class -> 填写“User” -> OK
此时回到“UserMapper”,将“User”类自行使用 import 语句导入。
import com.hotpot.demo.dao.User;
5. 编辑 User 类的内容
将“User”类中内容修改为:
public class User {
private int id;
private String name;
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
很好,现在万事俱备了。
13) 调用 UserMapper 运行查询语句并返回结果
回到“MainController”,我们添加两个语句在“public class xxx{”的下一行:
@Autowired
UserMapper userMapper;
如果现在 IDEA 提示你错误,不要理会。
如果想去掉 IDEA 对该行的提示,点击右下角戴帽子的小老头,选择“Syntax”即可。
然后再添加一个方法:
@RequestMapping("/test")
public void test() {
List<User> list = userMapper.getUsers();
for (User i:list) {
System.out.print("id为:" + i.getId());
System.out.print("name为:" + i.getName() + "\n");
}
}
此方法涉及到了“foreach”和“List”的知识,如果不太懂请百度。
最后,在浏览器中访问“localhost:8080/test”:
虽然浏览器报错了,但是在控制台中我们可以看到语句正常执行了。
报错是因为我填写的返回值是“void”为空,所以后端也不知道怎么返回,于是便抛出错误。
以上是基础搭建的全部过程。如果想将 List 传回前端并遍历显示出来,请自行研究。不过我更喜欢使用 JavaScript 的 JQuery 使用 JSON 与后台进行交互。
- 让项目支持不重启即可生效
打开“pom.xml”,找到“”并在它的之前加入:
<!-- hot swapping, disable cache for template, enable live reload -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
然后继续等候右下角进度条消失。
再再再再重启一次......
享受快捷
现在,当你修改了 Java 或是 html 文件后,你都可以点击右上角的绿色小锤子“Build”按钮,然后刷新下页面 —— 奇迹出现了!
最后
恭喜你踏出了 SpringBoot 学习的第一大步!现在你可以开始构建属于你自己的站点了!
如果这篇文章对你有所帮助,请帮助我点击右上方的“赞” || “评论” || “关注”!
如果你对内容有异议 || 问题,请在下方评论留言!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于