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.ymlapplication.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 协议 ,转载请注明出处!