IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 40-SpringBoot -> 正文阅读

[Java知识库]40-SpringBoot

40-SpringBoot-qianfeng-笔记


文章目录


一、SpringBoot介绍

①:引言

  • 为了使用SSM框架去开发,准备SSM框架的模板配置。
  • 为了Spring整合第三方框架,单独的去编写xml文件。
  • 导致SSM项目后期xml文件特别多,维护xml文件的成本是很高的。
  • SSM工程部署也是很麻烦,依赖第三方的容器。
  • SSM开发方式是很笨重。

②:SpringBoot介绍

SpringBoot是由Pivotal团队研发的,SpringBoot并不是一门新技术,只是将之前常用的Spring,SpringMVC,data-ipa等常用的框架封装到了一起,帮助你隐藏这些框架的整合细节,实现敏捷开发。
SpringBoot就是一个工具集

  • 特点
    • SpringBoot项目不需要模板化的配置
    • 在SpringBoot中整合第三方框架时,只需要导入相应的starter依赖包,就自动整合了
    • SpringBoot默认只有一个 .properties的配置文件,不推荐使用xml,采用 .java 的文件去编写配置信息
    • SpringBoot工程在部署时,采用的是jar包的方式,内部自动依赖Tomcat容器,提供了多环境的配置。
    • 后期要学习的微服务框架Springcloud需要建立在SpringBootl的基础上。

二、SpringBoot快速入门

①:快速构建SpringBoot

1. 选择构建项目的类型
在这里插入图片描述
2. 指定SpringBoot依赖和版本
在这里插入图片描述
3.第一次创建SpringBoot工程,下载大量依赖,保证,maveni已经配置了阿里云的私服。
4.
在这里插入图片描述
5. 将工程修改为web工程
在这里插入图片描述
6. 创建controller包在包下创建一个测试类
在这里插入图片描述
@RestController
public class TestController {
    @GetMapping("/test")
    public String test() {
        return "Hello SpringBoot";
    }
}
7.启动SpringBoot
在这里插入图片描述 在这里插入图片描述
8. 访问http://localhost:8080/test
在这里插入图片描述

②:SpringBoot的目录结构

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

③:SpringBoot三种启动方法

在这里插入图片描述在这里插入图片描述

1. 运行启动类的main方法即可运行SpringBoot工程
2. 采用maven的命令去运行SpringBoot工程
指令:mvn spring-boot:run
在这里插入图片描述
3. 采用jar包的方式运行
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

④:SpringBoot官网创建方式 (补)

1. 进入官网选择SpringBoot https://spring.io/
在这里插入图片描述
2. 一直下滑 找到Spring initializr
在这里插入图片描述
3. 填写相关信息
在这里插入图片描述

⑤:使用jetty服务启动程序 (补)

1. 排除tomcat服务器
在这里插入图片描述
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>

<!--            排除tomcat服务器-->
  <exclusions>
      <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-tomcat</artifactId>
      </exclusion>
  </exclusions>
</dependency>
2. 添加jrtty服务器的依赖
<!-- 添加jetty服务器依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

三、SpringBoot常用注解

①:@Configuration和@Bean

之前使用SSM去开发时,在xml文件中编写bean标签。
但是SpringBoot?不推荐使用xml文件。
@Configuration注解相当于beansi标签
@Bean注解相当于bean标签
id=“方法名|注解中的name属性(优先级更高)”
class=“方法的返回结果”

1. 定义一个实体类
在这里插入图片描述
@AllArgsConstructor
@NoArgsConstructor
@Data
@ToString
public class User {
    private int userId;
    private String username;
}
2. 创建User的配置类
在这里插入图片描述
@RestController  // 代表当前类是一个配置类:相当于<beans>标签
public class UserConfig {

    @Bean("user1")  // 构建一个实例,放到spring容器中:相当于<bean>标签
    public User getUser(){
        User user = new User(1,"张三");
        return user;
    }
}
3. 咋TestController中添加一个新的方法
在这里插入图片描述
@RestController
public class TestController {

    @Autowired
   // @Resource(name = "user1")
    private User user;

    @GetMapping("/test")
    public String test() {
        return "Hello SpringBoot";
    }

    @GetMapping("/user")
    public User user() {
        return user;
    }
}
测试结果
在这里插入图片描述

②:@SpringBootApplication

@SpringBootApplication就是一个组合注解

  • 1: @SpringBootConfiguration就是@Configuration注解,代表启动类就是一个配置类。
  • 2: @nableAutoConfiguration帮你实现自动装配的,SpringBoot工程启动时,运行一个SpringFactoriesL.oader的类,加载META-lNF/spring.factoriesi配置类(已经开启的),通过SpringFactoriesLoader中的load方法,以for循环的方式,一个一个加载。
    • 好处:无需编写大量的整合配置信息,只需要按照SpringBoot提供好了约定去整合即可。
    • 坏处:如果说你导入了一个starter依赖,那么你就需要填写他必要的配置信息。
    • 手动关闭自动装配指定容:@SpringBootApplication(exclude=QuartzAutoConfiguration.class
  • 3: @ComponentScani就相当于<context:component-scan basePackage=“包名”/>

四、SpringBoot常用配置

①:SpringBoot的配置文件格式

SpringBoot的配置文件支持properties和yml,甚至他还支持json。
更推荐使用yml文件格式

  • 1.yml文件,会根据换行和缩进帮助咱们管理配置文件所在位置。
  • 2.yml文件,相比properties.更轻量级一些

yml文件的劣势

  • 1.严格遵循换行和缩进。
  • 2.在填写value时,一定要在:后面跟上空格

②:多环境配置

01. 方式一(使用多个pml文件)

1. 模拟配置出生产环境和开发环境
在这里插入图片描述
2. 直接运行测试
在这里插入图片描述
3. 打包测试(再次将打好的jar包复制到桌面)
运行指令1 :java -jar .\springBoot_01_demo1-0.0.1-SNAPSHOT.jar
运行指令2 :java -jar .\springBoot_01_demo1-0.0.1-SNAPSHOT.jar --spring.profiles.active=环境名
在这里插入图片描述在这里插入图片描述在这里插入图片描述

02. 方式二(使用一个pml文件)(补)

在这里插入图片描述在这里插入图片描述

03. 方式三:使用peoperties (补)

在这里插入图片描述

04. 命令启动参数设置 (补)

1. 修改IDEA打包编码以免中文乱码

在这里插入图片描述

2. 命令启动

在这里插入图片描述

05.兼容问题(Maven与Boot)

在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

③:SpringBoot引入外部配置信息

在这里插入图片描述

1. 使用@Value获取值
在这里插入图片描述
2. 一次性获取多个值
在这里插入图片描述 在这里插入图片描述
3. 导入 spring-boot-configuration-processor 坐标
        <!--https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-configuration-processor -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <version>2.6.11</version>
        </dependency>
在这里插入图片描述

④:热加载

1. 问题分析
在这里插入图片描述
2. 导入依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
2.1 可以不指定版本
在这里插入图片描述
3. 设置自动构建项目
在这里插入图片描述
4.测试
在这里插入图片描述

⑤:配置文件自动提示功能消失

在这里插入图片描述
在这里插入图片描述

⑥:配置文件优先级 (补)

在这里插入图片描述

⑦:yaml格式 (补)

在这里插入图片描述在这里插入图片描述在这里插入图片描述

⑧:yaml格式读取数据(三种) (补)

1. 方式一: 直接获取数据
在这里插入图片描述
2. 方式二:直接获取全部信息 在 取数据
在这里插入图片描述
@RestController
public class TestController2 {

    @Autowired
    private Environment env;

    @GetMapping("/test2")
    public String test() {
        System.out.println(env.getProperty("server.port"));
        System.out.println(env.getProperty("books.names[1]"));
        return "Hello SpringBoot";
    }
}
3. 方式三:使用实体类进行封装数据
在这里插入图片描述
@Component
@ConfigurationProperties(prefix = "books")
@Data
@ToString
public class Books {
    private double price;
    private String[] names;
}
@RestController
public class TestController2 {

    @Autowired
    private Books book;

    @GetMapping("/test2")
    public String test() {
        System.out.println("******************");
        System.out.println(book);
        return "Hello SpringBoot";
    }
}

⑨:配置文件分类

在这里插入图片描述

1. IDEA中
在这里插入图片描述
2. 使用jar包时
在这里插入图片描述

五、SpringBoot整合MyBatis(xml方式)

①:导入依赖

1. 导入依赖
<!--        mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

<!--        dirid-->
        <!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.6</version>
        </dependency>

<!--        mybatis-->
        <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>

②:编写配置文件

01. 准备实体类

1. 使用Idea自动创建
在这里插入图片描述
2. 自动创建后在进行一定的调整和修改
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Classes {

  private long cId;
  private String cName;
  private String cDesc;
}
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Students {

  private String sId;
  private String sName;
  private long sAge;
  private long sCid;
}

02. 准备Mapper接口

1. 创建Mapper接口
在这里插入图片描述
public interface StudentMapper {
    List<Students> findAll();

}
2. 在启动类中添加,扫描Mapper接口所在的包
在这里插入图片描述
@MapperScan(basePackages = "com.it.springboot_01_demo1.mapper")

03. 准备映射文件

1. 创建Mapper文件编写数据库查询语句
在这里插入图片描述
<?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.it.springboot_01_demo1.mapper.StudentMapper">

    <select id="findAll" resultType="Students">
        select * from students;
    </select>

</mapper>
2. 在yml配置文件中添加mybatis的配置
在这里插入图片描述
# mybatis配置
mybatis:
  # 扫描配置文件
  mapper-locations: classpath:mapper/*.xml
  # 配置别名扫描的包
  type-aliases-package: com.it.springboot_01_demo1.entity
  # 开启驼峰映射配置
  configuration:
    map-underscore-to-camel-case: true
3. 指定数据库的连接信息
在这里插入图片描述
# 连接数据库的信息
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost/db_mybatis_demo2?characterset=utf-8&serverTimezone=UTC
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource

04. 测试

1. 创建测试类并继承启动测试类
在这里插入图片描述在这里插入图片描述
class StudentMapperTest extends SpringBoot01Demo1ApplicationTests {

    @Autowired
    private StudentMapper studentMapper;

    @Test
    void findAll() {
        List<Students> studentsList = studentMapper.findAll();
        for (Students student:studentsList) {
            System.out.println(student);
        }
    }
}

六、SpringBoot整合MyBatis(注解方式)

①:导入依赖

略~(可查考上面使用xml方式的配置)

②:创建实体类

略~(可查考上面使用xml方式的配置)

③:创建Mapper接口并添加MyBatis注解

添加Mybatis注解
针对增删改查:@Insert,@Delete,@Update,@Select

在这里插入图片描述
public interface StudentMapper2 {

    @Select("select * from students")
    List<Students> findAll();

    @Select("select * from students where sname = #{name}")
    Students findByName(@Param("name") String name);

}

④:数据库的信息和驼峰映射

# 连接数据库的信息
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost/db_mybatis_demo2?characterset=utf-8&serverTimezone=UTC
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource


# mybatis配置
mybatis:
  # 开启驼峰映射配置
  configuration:
    map-underscore-to-camel-case: true

⑤:测试

1. 创建测试类并继承启动测试类
在这里插入图片描述 在这里插入图片描述在这里插入图片描述

⑥:通过配置查看sql的执行过程

# 查看sql语句
logging:
  level:
    com.it.springboot_01_demo1.mapper: DEBUG
在这里插入图片描述

在这里插入图片描述

七、SpringBoot整合分页助手

①:导入依赖

<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>

②:测试

在这里插入图片描述
class StudentMapper2Test extends SpringBoot01Demo1ApplicationTests {

    @Resource
    private StudentMapper2 studentMapper2;
    
    @Test
    public void findByPage(){
        // 1. 执行分页(第一页 每页显示3条信息)
        PageHelper.startPage(1, 3);

        // 2. 执行查询
        List<Students> studentsList = studentMapper2.findAll();

        // 3. 封装PageInfo对象
        PageInfo<Students> pageInfo = new PageInfo<>(studentsList);

        // 4. 输出
        List<Students> students = pageInfo.getList();
        for (Students student:students) {
            System.out.println(student);
        }
    }
 }
2. 直接运行会报错
在这里插入图片描述
3. 解决办法
在这里插入图片描述

依赖循环引用是不鼓励的,默认情况下是禁止的。更新应用程序以删除bean之间的依赖循环。作为最后的手段,可以通过设置spring.main来自动打破循环。allow-circular-references为true。

可以通过在配置文件中配置如下属性以恢复正常

spring.main.allow-circular-references=true
4. 在测试
在这里插入图片描述

八、SpringBoot整合JSP

①:导入依赖

<!--        JSP核心引擎依赖-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        
<!--        JSTL-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

②:创建webapp目录及JSP页面

1. 创建目录及jsp页面
在这里插入图片描述
<%@page contentType="text/html;charset=utf-8" language="java" pageEncoding="UTF-8" %>

<html>
<head>

    <title>Title</title>
</head>
<body>
    <h2>Hello World!</h2>
</body>
</html>

③:设置前缀和后缀

1. 配置前缀和后缀
在这里插入图片描述
spring:
# 配置视图的前缀和后缀
  mvc:
    view:
      # 前缀:默认读取到 webapp 目录下
      prefix: /WEB-INF/
      suffix: .jsp

④:测试

1. 创建Controller类
在这里插入图片描述
@Controller
public class JspController {

    @GetMapping("index")
    public String index(Model model){
        model.addAttribute("name","张三");
        return "index";
    }

九、SpringBoo整合JUnit

在这里插入图片描述
在这里插入图片描述

1. 测试流程
在这里插入图片描述
2. 注意
在这里插入图片描述
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 01:51:23  更:2022-09-15 01:52:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:18:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码