SpringBoot(一)——快速入门
文章目录
- 1. 了解SpringBoot
- 2. 第一个SpringBoot程序
- 3. 理解SpringBoot原理
- 4. SpringBoot 的配置
- 5. SpringBoot 集成 MyBatis
- 6. SpringBoot 开发 Web 应用
1. 了解SpringBoot
原生开发:Servlet + jsp ,十分麻烦,web.xml 或者代码中都会存在大量重复内容;
简化开发 :Spring 里面所有东西都是配置文件,集成很多框架或者做一些大型项目,会导致整个程序和项目十分的臃肿,通篇的配置文件;
简化配置文件 :SpringBoot 就好像Spring的升级版,原来很多东西需要手动配置,现在只需要自动配置!
梳理SSM框架中麻烦之处 :
- 很多配置文件
- web.xml、 tomcat 都要配置
- lib依赖 也需要管理
那么在SpringBoot以上的一切,都不需要配置即可运行!
2. 第一个SpringBoot程序
1、使用IDEA构建一个SpringBoot程序
2、填写Maven项目基本信息
3、勾选启动器(Spring Web) 如果你勾选了这个,相当于帮你自动配置好了Spring和SpringMVC,包括Tomcat!
4、完成之后,等待Maven自动下载所有的依赖,再删除不需要的几个文件夹
最终的目录如下:
5、编写第一个程序
注意:一定要在 SpringBoot 主启动类的同级或者子级目录下,新建包!否则是识别不了的
package com.zz.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@RequestMapping("/hello")public String hello(){return "Hello,SpringBoot!";}
}
6、启动主启动类,访问测试:http://localhost:8080/hello
拓展:我们可以自定义 banner!
自定义的启动Logo,默认是Spring,可以根据自己喜好进行修改。
(1)我们在 resource 目录下新建一个 banner.txt文件,在这里面写入自己的banner即可
(2)在线网站生成:https://www.bootschool.net/ascii
(3)启动测试看效果
3. 理解SpringBoot原理
1、怎么启动的 ?
一个注解:@SpringBootApplication
一个类:SpringApplication
可以将自动生成的这个主启动类删除,自己手动写一个!
(1)在类上面增加一个@SpringBootApplication注解
(2) 使用SpringApplication的run方法启动
如写一个名为 ZzApplication 的主启动类:
package com.zz;//自己手写一个主启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class ZzApplication {public static void main(String[] args) {//run方法的启动SpringApplication.run(ZzApplication.class,args);}
}
2、依赖怎么配置的
思考:我们没有配置tomcat、 没有配置servlet、没有配置spring,这个怎么生效的?
SpringBoot默认有一个 pom.xml ,里面有父依赖以及场景启动器
父依赖:
父依赖作用分析
(1)自动帮你管理依赖,里面包含了几乎常用的所有依赖,如果你需要的依赖在这里面有,你就不要配置了,如果没有再配置
(2)插件和资源过滤的自动管理
启动器:
spring-boot-starter-xx 导入对应场景所需要的类,会自动帮你导入封装了这个场景所需要需要的依赖
官网有所有的启动器:https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/html/using-spring-boot.html#using-boot
4. SpringBoot 的配置
所有的配置都可以在配置文件中配置:
- application.yml / application.yaml
- application.properties
properties 是我们传统的配置文件 key = value
yaml 是SpringBoot 推荐的配置文件,功能更加强大
yaml 所有语法:(空格严格要求,缩进严格要求)
# 普通键值对
key: value
name: qinjiang# map/对象
key:k1: v1k2: v3person:name: qinjiangage: 3# 行内写法 {}
person: {name: qinjiang,age: 3}# list/数组
key:- v1- v2pets:- dog- pig- cat# 行内写法
pets: [dog,pig,cat]
5. SpringBoot 集成 MyBatis
注意:MyBatis 所有的包都是自己的,所以要导入自己的依赖
整个项目目录:
1、在pom.xml中添加驱动和依赖
<!-- 这是自定义的包 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.1</version></dependency><!-- mysql 驱动 在这不写版本号,默认使用mysql8的版本 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--在这里写的依赖都不需要版本号,因为在父依赖中有!--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
2、编写配置文件 application.yml
spring:datasource:username: rootpassword: 123456url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:type-aliases-package: com.kuang.pojomapper-locations: classpath:com/kuang/mapper/*.xml
3、测试数据源有没有,在测试类中测试即可
package com.zz;import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;@SpringBootTest
class HelloSpringbootApplicationTests {// 自动导入数据源@Autowiredprivate DataSource dataSource;// SpringBoot 2.X 默认集成的是 Hikari@Testvoid contextLoads() throws SQLException {// 查看默认数据源 class com.zaxxer.hikari.HikariDataSourceSystem.out.println(dataSource.getClass());// connectionConnection connection = dataSource.getConnection();System.out.println(connection);// 关闭连接connection.close();}
}
SpringBoot 目前默认的数据源是 class com.zaxxer.hikari.HikariDataSource
4、编写实体类 User
package com.zz.pojo;import lombok.Data;@Data
public class User {private int id;private String name;private String pwd;
}
5、编写接口 UserMapper(使用注解和 XML 都可以)
package com.zz.mapper;import com.zz.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;import java.util.List;@Mapper // @Mapper 标注这是一个Mapper接口
@Repository // 代表持久层
public interface UserMapper {// @Select("select * from user") 注解方式List<User> getUserLists();
}
6、编写接口的配置文件 UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.zz.mapper.UserMapper"><select id="getUserLists" resultType="User">select * from user;</select>
</mapper>
7、编写控制层 MyBatisController
package com.zz.controller;import com.zz.mapper.UserMapper;
import com.zz.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class MyBatisController {@Autowiredprivate UserMapper userMapper;@RequestMapping("/list")public List<User> getUserList(){List<User> userLists = userMapper.getUserLists();return userLists;}
}
8、配置 .xml 文件的资源过滤
由于 .xml 的配置文件没有导出,在pom.xml中配置资源过滤即可
<resources><resource><filtering>true</filtering><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources>
9、启动主启动类,进行测试
在地址栏输入 http://localhost:8080/list ,页面就显示了数据库中user表的数据
6. SpringBoot 开发 Web 应用
1、资源存放目录说明
static
静态资源
templates
页面,templates只能通过 controller来访问资源文件
resources
也可以存放资源文件
public
SpringBoot 源码中找到的,静态资源公共的可以放在这里
测试:
2、Thymeleaf 使用,导入静态资源模板 使用html 编写页面
Thymeleaf是一个流行的模板引擎,该模板引擎采用Java语言开发,模板引擎是一个技术名词,是跨领域跨平台的概念。
Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。使用thymeleaf创建的html模板可以在浏览器里面直接打开(展示静态数据),这有利于前后端分离。
(1)导入对应maven依赖
<!-- thymeleaf依赖,如果要编写页面一定需要这个依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
(2)编写 html 页面放到 templates 目录下
(3)使用controller 进行跳转
package com.zz.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller //可以被视图解析器解析
public class IndexController {//只要访问 / 就会跳转到templates目录下的index页面@RequestMapping("/")public String index(){return "index";}@RequestMapping("/user/index")public String userIndex(){return "user/index";}@RequestMapping("/user/list")public String userList(){return "user/list";}
}
(4)启动测试
3、页面传递值
(1)在后端方法中使用 Model 传递值
package com.zz.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import java.util.Arrays;@Controller //可以被视图解析器解析
public class IndexController {@RequestMapping("/")public String index(Model model){model.addAttribute("msg","Hello,SpringBoot!");model.addAttribute("users", Arrays.asList("小猫","小狗"));return "index";}
}
(2)在前端使用 th:xxx 去接收后端传递值,注意:一定要导入头文件约束
普通取值 和 循环遍历
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>首页</h1>
<!-- 普通取值 -->
<p th:text="${msg}"></p><!-- 循环遍历:接收后端传递的 users,遍历每个的结果就是user,可以在这个标签内使用!
th:each="item:items"
-->
<!--写法一-->
<h2 th:each="user:${users}" th:text="${user}"></h2>
<!-- 写法二:行内写法 -->
<h2 th:each="user:${users}">[[${user}]]</h2>
<!--写法三-->
<div th:each="user:${users}"><p th:text="${user}"></p>
</div></body>
</html>
启动测试:
SpringBoot(一)——快速入门相关推荐
- Springboot的快速入门
一.Spring简介 官网:spring.io: Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能. Spring Boot可以帮助我们非常快 ...
- SpringBoot系列: RestTemplate 快速入门
==================================== 相关的文章 ==================================== SpringBoot系列: 与Sprin ...
- SpringBoot快速入门——helloworld(来自官网)
SpringBoot官网快速入门指南 首先使用SpringBoot官网快速创建可以创建一个小项目 创建完以后点击下面的Generate可以下载一个zip文件,将文件解压到指定位置. 打开idea,新版 ...
- springboot创建parent_Spring Boot 开篇:快速入门
背景 想想之前搭建一个WEB项目,不管项目的功能简单或复杂,都需要哪些步骤: 配置 web.xml,加载 Spring 和 Spring mvc 配置数据库连接.配置 Spring 事务 配置加载配置 ...
- SpringBoot详解(一)-快速入门
SpringBoot详解系列文章: SpringBoot详解(一)-快速入门 SpringBoot详解(二)-Spring Boot的核心 SpringBoot详解(三)-Spring Boot的we ...
- SpringBoot约定大于配置的特性解读 SpringBoot快速入门
SpringBoot约定大于配置 Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系.随着Spring 3.0的 ...
- springboot controller访问不到_Spring Boot 开篇:快速入门
背景 想想之前搭建一个WEB项目,不管项目的功能简单或复杂,都需要哪些步骤: 配置 web.xml,加载 Spring 和 Spring mvc 配置数据库连接.配置 Spring 事务 配置加载配置 ...
- Springboot之YAML快速入门教学
Java作为高级编译程序的元老,以一处编译到处运行的特点,广受开发者喜爱我们学习Java,都是先介绍properties文件,使用properties文件配合Properties对象能够很方便的适用于 ...
- SpringBoot | SpringBoot快速入门
文章目录 SpringBoot快速入门(一) 1.什么是SpringBoot 2.什么是微服务架构 3.第一个SpringBoot程序 4.SpringBoot自动装配原理 (1)Pom.xml (2 ...
最新文章
- Nginx其他配置——日志管理、网页压缩、访问控制
- 单列多行转单行单列合并oracle_Oracle - 子查询、TOP - N
- ubuntu-chmod与chown命令
- oracle11g支持xp吗_拔掉U盘前一定需要安全弹出吗?
- LINUX学习笔记共五部分
- Java基础————理解Integer对象的缓存策略
- 高铁车厢女童突然抽搐 护士为防其咬舌将手指放口中
- css 获取第一个a标签,CSS-伪类获取除第一个之外的其他子元素
- django 1.8 官方文档翻译: 2-6-4 数据库访问优化
- 解决eclipse报PermGen space内存溢出异常的问题
- SystemCenter2012SP1实践(0)本系列摘要目录
- 串口接收到的字符型数据如何转化成数字
- flex 注册监听器时传值
- 20201016:力扣第210周周赛题解(下)
- 爬虫--网络数据采集
- 2022上半年朋友圈都在传的10本书,找到了
- 三年级计算机课标,三年级信息技术教案上册
- 小程序-实现列表- 搜索功能的实现(6)
- 前端使用微信sdk上传图片的坑,及万千种方法比较实用的一种,亲测有效
- JS检查日期是否为工作日
热门文章
- jprofiler分析dump文件_内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程)...
- golang微服务框架对比_Go语言开发的微服务框架,你了解多少?
- 基于深度学习的目标检测方法综述
- AtCoder AGC030C Coloring Torus (构造)
- oracle 11g r2配置文件,Oracle 11g R2 常用配置与日志的文件位置
- php中进制转换,php中进制转换
- 项目进度计划表_十大项目管理工具模版~
- springcloud分布式事务_Spring Cloud学习资源一网打尽!Awesome Spring Cloud v1.0
- 什么是java泛型_java泛型背后是什么
- pip更换源 windows10_Conda及Pip换源处理