SpringBoot入门(环境搭建,基础测试)

spring boot

1 概述

  • 什么是 spring boot ?
    • 用来简化新Spring应用的初始搭建以及开发过程
  • 特点:
    • 维护依赖,解决jar冲突。提供众多启动器 ....-starter (相当于jar包集合)
    • 简化配置,大大减少了配置文件、配置类。
    • 默认实现,默认情况下,提供了众多解决方案。

2 入门案例:手动搭建

2.1 分析

  • 创建maven项目
  • 在pom.xml文件,添加 web开发启动器
  • 编写controller,基于RESTFul
  • 编写启动类

2.2 实施

  • 创建maven项目:day17_boot_hello

  • 在pom.xml文件,添加 web开发启动器

        <!--确定spring boot版本-->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.5.RELEASE</version>
            <relativePath/>
        </parent>
    
        <dependencies>
            <!--web开发启动器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    
  • 编写controller,基于RESTFul

    package com.czxy.boot.controller;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author 桐叔
     * @email liangtong@itcast.cn
     */
    @RestController
    @RequestMapping("/hello")
    public class HelloController {
    
        @GetMapping
        public String hello() {
            return "你好";
        }
    }
    
    
  • 编写启动类

    package com.czxy.boot;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    /**
     * @author 桐叔
     * @email liangtong@itcast.cn
     */
    @SpringBootApplication
    public class HelloApplication {
        public static void main(String[] args) {
            SpringApplication.run(HelloApplication.class, args);
        }
    }
    
    
  • 访问

在这里插入图片描述

2. Spring Boot 入门

2.1 配置文件

2.1.1 yml 和 properties

  • spring boot 支持2中配置文件:*.yaml/*.yml*.properties
  • 配置文件的默认名:application
    • yml格式:application.yml
    • properties:application.properties
1) properties 配置
  • 位置:%maven%/src/main/resources/

在这里插入图片描述

  • 配置内容:key=value

    • key 内容任意值,一般采用包命名方式。例如:jdbc.driver
#端口号
server.port=9090

#数据源配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc://localhost:3306/ssm_db1
spring.datasource.username=root
spring.datasource.password=1234

2) yml 配置
  • 配置文件位置:
    在这里插入图片描述

  • 配置内容:key: value

    #实例
    A:
     B:
       C:
       	 key: value
    
    #端口号
    server:
      port: 9091
    
    #数据源
    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc://localhost:3306/ssm_db1
        username: root
        password: 1234
    
3) yml 高级使用
  • yml支持的数据类型

    # 自定义数据
    user:
      username: tom
      age: 12
      birthday: 1997/10/10
      vip: true
      valueList:
        - MyBatis
        - SpringMVC
        - SpringBoot
      ageArray:
        - 18
        - 20
        - 22
      userList:   # 复杂写法 List<Map> -> [{name:tom,age:20},{name:Jack,age:22}]
        - name: tom
          age: 20
        - name: Jack
          age: 22
    

2.1.2 配置内容获取

  • 通常使用2种方式:@Value、@ConfigurationProperties
    • @Value:一个一个值的获取,通过key获得value,key为properties文件key书写方式
    • @ConfigurationProperties,确定前缀,一次性加载一组内容。
1) @Value 获得一个值
package com.czxy.boot.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
@Configuration
public class OneConfig {

    /**
     * 获得配置文件中的内容 ${key:默认值}
     */
    @Value("${server.port:8000}")
    private Integer port;

    /**
     * 打印获得内容
     * @return
     */
    @Bean
    public String oneDemo() {
        System.out.println("port端口号:" + port);
        return "";
    }

}

2)@ConfigurationProperties 获得一组值
package com.czxy.boot.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
@Configuration
@ConfigurationProperties(prefix = "user")
public class UserConfig {
    private String username;
    private Integer age;
    private Date birthday;
    private boolean vip;
    private List<String> valueList;
    private String[] ageArray;
    private List<Map<String,String>> userList;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public boolean isVip() {
        return vip;
    }

    public void setVip(boolean vip) {
        this.vip = vip;
    }

    public List<String> getValueList() {
        return valueList;
    }

    public void setValueList(List<String> valueList) {
        this.valueList = valueList;
    }

    public String[] getAgeArray() {
        return ageArray;
    }

    public void setAgeArray(String[] ageArray) {
        this.ageArray = ageArray;
    }

    public List<Map<String, String>> getUserList() {
        return userList;
    }

    public void setUserList(List<Map<String, String>> userList) {
        this.userList = userList;
    }

    @Override
    public String toString() {
        return "UserConfig{" +
                "username='" + username + '\'' +
                ", age=" + age +
                ", birthday='" + birthday + '\'' +
                ", vip=" + vip +
                ", valueList=" + valueList +
                ", ageArray=" + Arrays.toString(ageArray) +
                ", userList=" + userList +
                '}';
    }

    @Bean
    public String userDemo() {
        System.out.println(this);
        return "";
    }

}

2.1.3 配置文件优先级

1)yml 和 properties优先级
  • properties 优先级大于 yml (properties覆盖了yml的内容)
2)位置优先级
  • 配置文件存放的位置不同,优先级不同。

    • file:./config/:项目jar包所在目录的config目录

    • file:./ :项目jar包所在的同级目录

    • classpath:/config:classpath(resource)目录下config目录

    • classpath:/:classpath(resource)目录下

  • idea环境下优先级
    在这里插入图片描述

  • 完整的配置优先级的对比(优先级:9001 > 9002 > 9003 > 9004)

在这里插入图片描述

2.1.4 多环境配置

  • 需要为不同的环境编写配置文件 application-{profile}.yml

在这里插入图片描述

  • 启动不同的配置

    • 方式1:application.yml 文件配置

      2

      spring:
        profiles:
          active: 10000
      
    • 方式2:在idea中,配置启动类的参数

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oTWhMuIv-1634803234128)(E:/笔记/大数据/第五学期/笔记/Spring/笔记/day12/笔记/随堂笔记/assets/image-20211019095301241.png)]

    • 方式3:在cmd中,配置jar包的参数

      java -jar -Dspring.profiles.active=10000 xxx.jar
      

在这里插入图片描述

2.2 部署

2.2.1 项目部署

  • 将spring boot项目打包成可运行的jar。
  • 仅需要在pom.xml文件中,添加一个插件,并配置启动类。
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!--  配置启动类  -->
                    <mainClass>com.czxy.boot.HelloApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.2.2 热部署

  • 现状:编写controller后,需要重启才能生效。

  • 热部署:当修改部分内容后,自动部署,不用重启就可以访问。

  • 步骤:

    1. 开启auto make自动编译(一次性)
    2. 设置自动编译项目(跟项目)
    3. 添加依赖
  • 步骤:

    1. 开启auto make自动编译(一次性)

    在这里插入图片描述

    1. 设置自动编译项目(跟项目)

    2. 添加依赖

      <!-- 热部署模块 -->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-devtools</artifactId>
          <!-- 这个需要为 true -->
          <optional>true</optional>
      </dependency>
      

2.3 整合测试

  • spring boot 整合 Junit

  • 步骤:

    1. 添加依赖
    2. 编写测试用例
  • 实现:

    1. 添加依赖

      <!--test 启动器-->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
              </dependency>
      
    2. 编写测试用例

      package com.czxy.boot.service;
      
      import com.czxy.boot.HelloApplication;
      import org.junit.Test;
      import org.junit.runner.RunWith;
      import org.springframework.boot.test.context.SpringBootTest;
      import org.springframework.test.context.junit4.SpringRunner;
      
      import javax.annotation.Resource;
      
      /**
       * @author 桐叔
       * @email liangtong@itcast.cn
       */
      @RunWith(SpringRunner.class)                        // spring 整合 Junit
      @SpringBootTest(classes = HelloApplication.class)   // spring boot 整合 Junit
      public class TestUserService {
      
          @Resource
          private UserService userService;
      
          @Test
          public void testSave() {
              userService.save();
          }
      }
      
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值