SpringBoot入门

(可以参考讲义,讲义比较详细)

一、SpringBoot简介

SpringBoot核心功能:

  • 起步依赖:
  • 自动配置:

二、SpringBoot快速入门

(此处是用没有骨架的maven创建)

1、简单的演示:

①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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

<!--springBoot要求:所有项目工程都要继承起步依赖spring-boot-starter-parent-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
    
    <groupId>com.itheima</groupId>
    <artifactId>springboot_Test01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--以功能为单位的依赖,而不是具体某个包-->
    <!--SpringBoot要集成SpringMVC进行Controller的开发,所以项目要导入web的启动依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>
②引导类
@SpringBootApplication   //标记了此类为引导类
public class MySpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class);//启动引导页
    }
}
  • @SpringBootApplication:标注SpringBoot的启动类,该注解具备多种功能(后面详细剖析)
  • SpringApplication.run(MySpringBootApplication.class) 代表运行SpringBoot的启动类,参数为SpringBoot启动类的字节码对象

成功启动后,控制台输出:
在这里插入图片描述
访问ip:8080页面:
(因为我们没有定义页面就报404了,但是这样可以验证我们的springboot可以正常启动了)
在这里插入图片描述

③我们再定义1个Controller

什么都不用配置,直接定义Controller给注解就行。

在这里插入图片描述

@Controller
public class QuickStartController {
    @RequestMapping("/quick")
    @ResponseBody
    public String quick(){
        return "你好,SpringBoot!";
    }
}

输出:

你好,SpringBoot!

2、快速入门解析

①热部署

为什么要配置热部署?

当我们在项目启动的之时,修改了代码,我们就不需要重启项目了。

怎么配置热部署?

pom.xml配置:

<!--热部署配置-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

但是,当你尝试着去测试的时候就会失败,为什么?

因为IDEA工具默认不支持自动编译! 所以,需要我们设置一下IDEA:
在这里插入图片描述

②使用idea快速创建SpringBoot项目

在这里插入图片描述

三、SpringBoot原理分析

  • 起步依赖 - parent
	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
-----------------------------------------------------------------------
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath>../../spring-boot-dependencies</relativePath>
    </parent>

所有的项目工程都继承这个org.springframework.boot起步依赖,这个依赖的爸爸是org.springframework.boot

他们主要是导入了一些jar包,和版本锁定。

  • 起步依赖 - web

主要到导入了关于web的jar包,比如:sprngMVC、tomcat、json…

    <!--web-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
 从上面的spring-boot-starter-dependencies的pom.xml中我们可以发现,一部分坐标的版本、依赖管理、插件管理已经定义好,所以我们的SpringBoot工程继承spring-boot-starter-parent后已经具备版本锁定等配置了。所以起步**依赖的作用**就是**进行依赖的传递。**p       </dependency>

从上面的spring-boot-starter-dependencies的pom.xml中我们可以发现,一部分坐标的版本、依赖管理、插件管理已经定义好,所以我们的SpringBoot工程继承spring-boot-starter-parent后已经具备版本锁定等配置了。所以起步依赖的作用就是进行依赖的传递。

  • 自动配置 :@SpringBootApplication

在这里插入图片描述

  • 自动配置 :@EnableAutoConfiguration

在这里插入图片描述

springboot配置了一些默认的配置,如果你需要修改配置,就用自定义配置文件覆盖它。

比如:springBoot内置的tomcat配置是8080,没有虚拟路径,也就是“/”。
那么我现在我想改变Tomcat的访问端口是8081,访问的虚拟路径是/demo,那么我怎么设置呢?
(他会默认扫resource下的配置文件)在这里插入图片描述

四、SpringBoot配置文件

1、yml简介

springBoot支持:yml(yaml)、properties配置文件。
YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式

好处:

  • 1、电脑容易识别
  • 2、读者容易识别
  • 3、编程语言之间的通用性,容易与脚本语言交互
  • 4、配置时,只关注配置数据。(xml附带过多的标签)

优选级:

查看起步依赖代码可知,springBoot读取配置文件的顺序:

        <includes>
          <include>**/application*.yml</include>
          <include>**/application*.yaml</include>
          <include>**/application*.properties</include>
        </includes>

如果配置文件配置的数据出现重复,后者会覆盖前者。

2、yml语法

注意:

yml是以key-value的形式进行表示的。它跟json的格式差不多。

  • key:
    key前面的空格(缩进)是不限定的,可以加也可以不加。SpringBoot是根据空格(缩进)的多少,来判断key与key之间的层级关系的:如果多个key之间前面的空格(缩进)是一样是,表示它们是同级关系;如果不一样,就是包含关系,。
  • value
    value的前面一定要有1个空格。

下面来演示一下:普通数据、对象数据、数组(List、Set)、Map

1、普通数据
格式:
key: value

name: LiZhiXi
2、对象数据
格式1:
key:
 key: value1
 key: value2

演示:

Person:
  name: LiZhiXi
  age: 20
--------------------------------------

格式2:
key: {key1: value1,key2: value2}

演示:

Student: {name: LiZhiXi,age: 20}
3、数组(List、Set)
格式:

①普通字符串
key:
 - value1
 - value2
或者
key: [value1,value2]

②对象
key:
 - key01: value01
   key02: value02
 - key03: value03
   key04: value04
   
其中: 
- key01: value01
   key02: value02
代表1个对象
--------------------------------
演示:
①
man:
  - LiZhiXi
  - 20

man: [LiZhiXi,20]coder:
  - name: LiZhiXi
    age: 20
  - name: LiuDeHua
    age: 50
4、Map(同对象一样)
格式:

key:
  key01: value01
   
演示:

coder:
  name: LiZhiXi
  age: 20
3、配置文件与配置类的属性映射方式

SpringBoot获取配置文件的数据时,它只分得请它自己规定键值对数据(你要要覆盖的数据),它分不清你自己自定义的键值对,所以你要自己引入

①@Value

@Value(“${key / 对象.key}”)

好处: 精准的注入属性值
坏处: 需要自己频繁加入注解

演示:

yml配置文件

#普通字符串
name: LiZhiXi
#对象
person:
 age: 20

Controller

@Controller
public class ValueDemo {

    @Value("${name}")
    private String name;
    @Value("${person.age}")
    private String age;

    @RequestMapping("/value")
    @ResponseBody
    public String value(){

        return "name:"+name+",age:"+age;
    }
}

输出:

name:LiZhiXi,age:20
② @ConfigurationProperties

@ConfigurationProperties(prefix=“配置文件中的key的前缀”):可以将配置文件中的配置数据自动与实体进行映射

好处:

不需要频繁加注解
注意:
使用这个注解,被注入的字段必须提供get/set方法

演示:

yml:

person:
 age: 20
 name: LiZhiXi

contoller:

@Controller
@ConfigurationProperties(prefix = "person")
public class ValueDemo2 {
    private String name;
    private String age;

    @RequestMapping("/value2")
    @ResponseBody
    public String value(){
        return "name:"+name+",age:"+age;
    }

//此处省略grt/set方法
}

输出结果:

执行成功!但是,你会发现,你的IDEA会提示:

它提示找不到@ConfigurationProperties的执行器,你没有配置。
在这里插入图片描述

不是可以映射么?为什么还要配置?
在这里插入图片描述

五、SpringBoot整合其它技术

①Mybatis

1、创建SpringBoot项目工程
2、配置pom.xml

①添加Mybatis的起步依赖(springBoot提供)

<!--mybatis起步依赖-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.1.1</version>
</dependency>

②添加数据库驱动坐标(mybatis提供)

<!-- MySQL连接驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
3、添加数据库连接信息

在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
4、创建数据库+实体类
5、编写Mapper

在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>

注意: @Mapper标记该类是一个mybatis的mapper接口,可以被spring boot自动扫描到spring上下文中

6、在application.properties中添加mybatis的信息
#spring集成Mybatis环境
#pojo别名扫描包
mybatis.type-aliases-package=com.itheima.domain
#加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml

②Junit

1、pom.xml

IDEA快速创建springBoot时一般都会导入,如果没有就导入:

<!--测试的起步依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
2、测试类
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MySpringBootApplication.class)
public class MapperTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void test() {
        List<User> users = userMapper.queryUserList();
        System.out.println(users);
    }

}

③JPA

④Redis

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值