SpringBoot快速入门
本文最后更新于:2021年1月9日 上午
一杯茶,一根烟,一个HelloWorld写一天
1.概述
(1)特点
- 开箱即用,没有代码生成,也无需XML配置,同时也可以修改默认值来满足特定的需求
- 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标、健康监测等等
- SpringBoot不是Spring功能上的增强,而是提供了一种快速使用Spring的方式
(2)核心功能
- 起步依赖:将具备某些功能的坐标打包在一起,并提供一些默认功能。(本质上是一个Maven项目对象模型POM)
- 自动配置:应用程序启动时,自动地完成相应配置
2.HelloWorld
(1)配置POM文件
- 继承SpringBoot的起步依赖
spring-boot-starter-parent
- 导入web的启动依赖以使SpringBoot集成SpringMVC进行Controller的开发
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- SpringBoot的起步依赖 -->
<!-- 所有的SpringBoot工程都必须继承spring-boot-starter-parent-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.0</version>
</parent>
<!-- 项目名、版本、组织等 -->
<groupId>org.example</groupId>
<artifactId>SpringBoot_HelloWorld</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- WEB功能的启动依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
(2)编写引导类
// src.main.java.Demo1.MySpringBootApplication.java
package Demo1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// 标识该类为SpringBoot的引导类(入口)
@SpringBootApplication
public class MySpringBootApplication {
public static void main(String[] args) {
// 此处是SpringApplication!!!!不是SpringBootApplication
// run方法 表示运行SpringBoot的引导类,其参数用SpringBoot引导类的字节码即可
SpringApplication.run(MySpringBootApplication.class);
}
}
(3)编写Controller
// src.main.java.Demo1.controller.QuickController.java
package Demo1.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
// 标识为控制器类
@Controller
public class QuickController {
// 访问哪个地址时响应
@RequestMapping("/quick")
@ResponseBody // 返回字符串
public String quick(){
return "Hello, SpringBoot";
}
}
(4)工程热部署
修改代码,无需重新启动服务,自动生效。
在pom中添加
spring-boot-devtools
依赖即可<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
开启IDEA的自动编译,然后
Ctrl+Shift+alt+/
,进行注册即可
(5)Tip:快速创建SpringBoot工程
在使用IDEA创建Spring Boot项目的时候,报
Artifact contains illegal characters
”:修改:把Artifact的内容都改成小写;例如 : “Demo” 改为 “demo”
该方法会自动生成引导类、测试类等,名称为模块名安装驼峰命名法改写的。
- 在线生成也可以,网址为 https://start.spring.io/
3.SpringBoot的配置文件
(1)配置文件类型
application.yml
、application.yaml
或者application.properties
,其中application.properties
优先级最高,application.yml
最低yaml基本语法:
通过空格来控制层级关系
# 普通数据的配置
key: value
# map配置
map:
key1: value1
key2: value2
# 对象的配置
server:
port: 8082
# 行内对象配置
person: {name: sam, age: 18, addr: beijing}
# 配置数组(list、set)数据
city:
- beijing
- tianjian
- chongqing
city: [beijing, tianjin, chongqing]
# 配置数据、集合(对象数据)
student:
- name: tom
age: 18
addr: beijing
- name: sam
age: 20
addr: tianjin
student: [{name: tom, age: 18, addr: beijing},{name: sam, age: 20, addr: tianjin}]
(2)配置文件与配置类的属性映射方式
@Value
映射
@Value("${name}")
private String name;
@Value("${person.addr}")
private String addr;
@ConfigurationProperties
映射
// 在类上面 @ConfigurationProperties(prefix="person") 会自动从配置文件中寻找
// 添加预处理依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
// 然后在类里面,直接创建变量就好,无需再@value,比如
private String name;
private String addr;
// 创建完变量,由于修饰词是private,还有创建set和get方法(alt+insert)
4.SpringBoot融合其他技术
(1)整合mybatis
添加mybatis起步依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency>
添加数据库驱动坐标
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
添加数据库连接信息
# application.properties # 数据库连接信息 spring.datasource.driverClassname = com.mysql.jdbc.Driver spring.datasource.url = jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root
在数据库中创建user表
-- ------ Table Structure ------ -- DROP TABLE IF EXISTS 'user'; CREATE TABLE 'user'( 'id' INT(11) NOT NULL AUTO_INCREMENT, 'username' varchar(50) DEFAULT NULL, 'password' varchar(50) DEFAULT NULL, 'name' varchar(50) DEFAULT NULL, PRIMARY KEY('id') ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; -- Records of user INSERT INTO 'user' VALUES ('1', 'zhangsan', '123', '张三'); INSERT INTO 'user' VALUES ('2', 'lisi', '234', '李四');
创建实体bean
// src.main.java.com.itheima.domain.User.java public class User{ private Integer id; private String username; private String password; private String name; // set、get、toString方法 }
创建Mapper接口
// src.main.java.com.itheima.mapper.UserMapper.java // @Mapper标记该类是一个mybatis的Mapper接口,可以被springboot自动扫描到spring上下文中 @Mapper public interface UserMapper{ public List<user> queryUserList(); }
创建Mapper映射文件,并配置实体bean和数据库的映射
<!-- src.main.resources.mapper.UserMapper.xml --> <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.itheima.mapper.UserMapper"> <select id="queryUserList" resultType="user"> select * from user </select> </mapper>
在
application.properties
中添加mybatis# application.properties # spring集成Mybatis环境 # pojo别名扫描包 mubatis.type-aliases-package=com.itheima.domain # 加载Mybatis映射文件 mybatis.mapper-locations=classpath:mapper/*Mapper.xml
编写测试Controller
// src.main.java.com.itheima.controller/MybatisController.java @Controller public class MybatisController{ @Autowired privete UserMapper userMapper; @RequestMapper("/query") @ResponseBody public List<User> queryUserList(){ List<User> users = userMapper.queryUserList(); return users; } }
测试成功页面
数据库出了些问题。。。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!