SpringBoot框架

目录

一、springboot入门案例

1. SpringBoot 项目开发步骤

        (1)创建新模块,选择Spring初始化,并配置模块相关基础信息​编辑

        (2)设置 GAV 坐标及 pom 配置信息 ​编辑

        (3)选择 Spring Boot 版本及依赖​编辑

        (4)设置模块名称、Content Root 路径及模块文件的目录,然后点击finish即可​

        (5)项目结构如下:​编辑

        (6)对pom.xml文件进行解释

 2. 创建一个 Spring MVC 的 Spring BootController 

      (1)创建SpringBootController 类

        (2)启动Application类中的main方法

         (3)在浏览器中输入 http://localhost:8080/springBoot/say进行访问 

3. SpringBoot项目快速启动

         4.  分析

二、SpringBoot概述

1. 简介

2. 特性

3. 四大核心

4. 起步依赖

(1)starter

(2)parent

(3)实际开发

5. 辅助功能

(1)SpringBoot程序启动

(2)SpringBoot在创建项目时,采用jar的打包方式

(3)SpringBoot的引导类是项目的入口,运行main方法就可以启动项目

(4)使用maven依赖管理变更起步依赖项

(5)Jetty比Tomcat更轻量级,可扩展性更强

三、基础配置

1. 配置文件格式

(1)修改服务器端口

(2) 自动提示功能消失解决方案

 (3)SpringBoot配置文件加载顺序

 (4)注意事项

2. yaml

(1)什么是yaml

(2)yaml语法规则

(3)数组数据

 (4) yaml数据读取  

3. 多环境开发配置

(1)多环境启动配置

        a.  yaml文件多环境启动

        b.  properties文件多环境启动

(2)多环境启动命令格式

     a.  带参数启动SpringBoot

     b.  参数加载优先顺序

 (3)多环境开发控制

          ①:Maven中设置多环境属性

          ②:SpringBoot中引用Maven属性

          ③:执行Maven打包指令

 4. 配置文件分类

四、整合第三方技术

1. SpringBoot整合JUnit

   (1)Spring整合JUnit(复习)​编辑

   (2)SpringBoot整合JUnit

2. 基于SpringBoot实现SSM整合

(1)Spring整合MyBatis(复习)

(2)SpringBoot整合MyBatis

 ①:创建新模块,选择Spring初始化,并配置模块相关基础信息

 ②:选择当前模块需要使用的技术集(MyBatis、MySQL)

 ③:设置数据源参数

④:定义数据层接口与映射配置

⑤:测试类中注入dao接口,测试功能

(3)SpringBoot实现ssm整合案例


一、springboot入门案例

1. SpringBoot 项目开发步骤

        (1)创建新模块,选择Spring初始化,并配置模块相关基础信息SpringBoot框架_第1张图片

        (2)设置 GAV 坐标及 pom 配置信息 SpringBoot框架_第2张图片

        (3)选择 Spring Boot 版本及依赖SpringBoot框架_第3张图片

        (4)设置模块名称、Content Root 路径及模块文件的目录,然后点击finish即可

        (5)项目结构如下:SpringBoot框架_第4张图片

    static:存放静态资源。如图片、CSS、JavaScript 等 

    templates:存放 Web 页面的模板文件 

    application.properties/application.yml 用于存放程序的各种依赖模块的配置信息,
                                           比如 服务端口,数据库连接配置等

    .gitignore:使用版本控制工具 git 的时候,设置一些忽略提交的内容 

    Application.java:SpringBoot 程序执行的入口,执行该程序中的 main 方法,
                                 启动当前SpringBoot项目。

        (6)对pom.xml文件进行解释

 
 
 4.0.0 
  
  
     org.springframework.boot 
     spring-boot-starter-parent 
     2.2.1.RELEASE 
       
  
 
  
 com.bjpowernode.springboot 
 002-springboot-springmvc 
 1.0.0 
 
  
 002-springboot-springmvc 
  
 Demo project for Spring Boot 
 
  
  
     1.8 
  
 
 
  
  
      
         org.springframework.boot 
         spring-boot-starter-web 
      
 
  
      
         org.springframework.boot 
         spring-boot-starter-test 
         test 
          
              
                 org.junit.vintage 
                 junit-vintage-engine 
              
          
      
  
 
  
      
          
          
             org.springframework.boot 
             spring-boot-maven-plugin 
          
      
  
 

 2. 创建一个 Spring MVC 的 Spring BootController 

      (1)创建SpringBootController 类

        注意:新创建的类一定要位于 Application 同级目录或者下级目录,否则 SpringBoot 加
载不到。 

package com.bjpowernode.springboot.web; 
 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody; 
 
@Controller 
public class SpringBootController { 
 
 @RequestMapping(value = "/springBoot/say") 
 public @ResponseBody String say() { 
     return "Hello,springBoot!"; 
 } 
} 

        (2)启动Application类中的main方法

        通过在控制台的输出,可以看到启动 SpringBoot 框架,会启动一个内嵌的 tomcat,端
口号为 8080,上下文根为空 。SpringBoot框架_第5张图片

         (3)在浏览器中输入 http://localhost:8080/springBoot/say进行访问 

3. SpringBoot项目快速启动

(1)对SpringBoot项目打包(执行Maven构建指令package)
(2) 执行启动指令

java -jar springboot_01_quickstart.jar # 项目的名称根据实际情况修改

注意事项:
               jar支持命令行启动需要依赖maven插件支持,请确认打包时是否具有SpringBoot对应的maven插
件。 


    
      
         org.springframework.boot
         spring-boot-maven-plugin
      
    

 4.  分析

        (1)spring-boot-starter-parent 是一个 Springboot 的父级依赖,开发 SpringBoot 程序都需
要继承该父级项目,它用来提供相关的 Maven 默认依赖,使用它之后,常用的 jar
包依赖可以省去 version 配置 
        (2)Spring Boot 提供了一些默认的jar 包的依赖,可查看该父级依赖的 pom 文件 
        (3)如果不想使用某个默认的依赖版本,可以通过 pom.xml 文件的属性配置覆盖各个
依赖项,比如覆盖 Spring 版本: 

  
     5.0.0.RELEASE 
  

        (4) @SpringBootApplication 注解是 Spring Boot 项目的核心注解,主要作用是开启
Spring 自动配置,如果在 Application 类上去掉该注解,那么不会启动 SpringBoot程序 
        (5)main 方法是一个标准的 Java 程序的 main 方法,是boot项目启动运行的入口
        (6)@Controller 及 @ResponseBody 依然是我们之前的 Spring MVC,因为 Spring Boot
的里面依然是使用我们的 Spring MVC + Spring + MyBatis 等框架 

二、SpringBoot概述

1. 简介

          springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVC+Spring+Mybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整合在一起,而springboot抛弃了繁琐的xml配置过程,采用大量默认的配置来简化我们的spring开发过程。

         SpringBoot化繁为简,使开发变得更加的简单迅速。

 Spring程序缺点:
              配置繁琐
              依赖设置繁琐

 SpringBoot程序优点:
              自动配置
              起步依赖(简化依赖配置)
              辅助功能(内置服务器,……)

2. 特性

(1) 能够快速创建基于spring的程序
(2) 能够直接使用Java main方法启动内嵌的Tomcat服务器运行springboot程序,不需要部署war包
(3) 提供约定的starter POM来简化Maven配置,让Maven的配置变得简单
(4) 自动化配置,根据项目的Maven依赖配置,springboot自动配置spring、springmvc等
(5) 提供了程序的健康检查功能
(6) 基本可以完全不使用xml配合文件,采用注解配置

3. 四大核心

自动配置、起步依赖、Actuator、命令行界面

4. 起步依赖

(1)starter

                      SpringBoot中常见项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的



4.0.0

org.springframework.boot
spring-boot-starter-parent
2.5.0

com.itheima
springboot-01-quickstart
0.0.1-SNAPSHOT


org.springframework.boot
spring-boot-starter-web



4.0.0
org.springframework.boot
spring-boot-dependencies
2.5.0
pom

4.0.1
...

(2)parent

                       所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的spring-boot-starter-parent(2.5.0)与 spring-boot-starter-parent(2.4.6)共计57处坐标版本不同



4.0.0

org.springframework.boot
spring-boot-dependencies
2.5.0

spring-boot-starter-parent
pom
...

(3)实际开发

                           使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供,如发生坐标错误,再指定version(要小心版本冲突)


junit
junit
${junit.version}


javax.servlet
javax.servlet-api
${servlet-api.version}



org.springframework.boot
spring-boot-starter-parent
2.5.0



org.springframework.boot
spring-boot-starter-web


org.springframework.boot
spring-boot-starter-test
test


5. 辅助功能

(1)SpringBoot程序启动

@SpringBootApplication
public class Springboot01QuickstartApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot01QuickstartApplication.class, args);
}
}

(2)SpringBoot在创建项目时,采用jar的打包方式

(3)SpringBoot的引导类是项目的入口,运行main方法就可以启动项目

(4)使用maven依赖管理变更起步依赖项

(5)Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换为Jetty



org.springframework.boot
spring-boot-starter-web



org.springframework.boot
spring-boot-starter-tomcat





org.springframework.boot
spring-boot-starter-jetty

三、基础配置

1. 配置文件格式

(1)修改服务器端口

http://localhost:8080/books/1 >>> http://localhost/books/1

      SpringBoot提供了多种属性配置方式:

          a.  application.properties

server.port=80

         b.  application.yml

server:
  port: 81

       c.  application.yaml

server:
  port: 82

(2) 自动提示功能消失解决方案

        操作步骤:

SpringBoot框架_第6张图片SpringBoot框架_第7张图片

 SpringBoot框架_第8张图片

 SpringBoot框架_第9张图片

 SpringBoot框架_第10张图片

 SpringBoot框架_第11张图片

 (3)SpringBoot配置文件加载顺序

    application.properties > application.yml > application.yaml

 (4)注意事项

1. SpringBoot核心配置文件名为application
2. SpringBoot内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性

2. yaml

(1)什么是yaml

                 YAML(YAML Ain't Markup Language),一种数据序列化格式 

优点:
     容易阅读
     容易与脚本语言交互
     以数据为核心,重数据轻格式
YAML文件扩展名
             .yml(主流)
             .yaml

(2)yaml语法规则

(1)大小写敏感
(2)属性层级关系使用多行描述,每行结尾使用冒号结束
(3)使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
(4)属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
(5)#表示注释
(6)核心规则:数据前面要加空格与冒号隔开

(3)数组数据

                 数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔

SpringBoot框架_第12张图片

 (4) yaml数据读取

          a.  使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名……}

SpringBoot框架_第13张图片

     b.  封装全部数据到Environment对象

SpringBoot框架_第14张图片

 c.  自定义对象封装指定数据【常用】

public class Enterprise {
private String name;
private Integer age;
private String tel;
private String[] subject;
//自行添加getter、setter、toString()等方法
}

SpringBoot框架_第15张图片

 d.  自定义对象封装数据警告解决方案


org.springframework.boot
spring-boot-configuration-processor
true

3. 多环境开发配置

(1)多环境启动配置

        a.  yaml文件多环境启动

SpringBoot框架_第16张图片

 SpringBoot框架_第17张图片

 SpringBoot框架_第18张图片

       b.  properties文件多环境启动

#主启动配置文件 application.properties
spring.profiles.active=pro
#环境分类配置文件 application-pro.properties
server.port=80
#环境分类配置文件 application-dev.properties
server.port=81
#环境分类配置文件application-test.properties
server.port=82

(2)多环境启动命令格式

     a.  带参数启动SpringBoot

java –jar springboot.jar --spring.profiles.active=test
java –jar springboot.jar --server.port=88
java –jar springboot.jar --server.port=88 --spring.profiles.active=test

    b.  参数加载优先顺序

          参看文档:https://docs.spring.io/spring-boot/docs/current/reference/html/spring-bootfeatures.html#boot-features-external-config

SpringBoot框架_第19张图片

 (3)多环境开发控制

     a.    Maven与SpringBoot多环境兼容(步骤)

         ①:Maven中设置多环境属性



dev_env

dev


true



pro_env

pro



test_env

test


     ②:SpringBoot中引用Maven属性

SpringBoot框架_第20张图片

     ③:执行Maven打包指令

             Maven指令执行完毕后,生成了对应的包,其中类参与编译,但是配置文件并没有编译,而是复制到包中

           解决思路:对于源码中非java类的操作要求加载Maven对应的属性,解析${}占位符

④:对资源文件开启对默认占位符的解析




maven-resources-plugin

utf-8
true



   b.   Maven打包加载到属性,打包顺利通过

 4. 配置文件分类

SpringBoot中4级配置文件
            1级: file :config/application.yml 【最高】
            2级: file :application.yml
            3级:classpath:config/application.yml
            4级:classpath:application.yml 【最低】

作用:
     1级与2级留做系统打包后设置通用属性
     3级与4级用于系统开发阶段设置通用属性

四、整合第三方技术

1. SpringBoot整合JUnit

   (1)Spring整合JUnit(复习)SpringBoot框架_第21张图片

 (2)SpringBoot整合JUnit

【第一步】添加整合junit起步依赖(可以直接勾选)


org.springframework.boot
spring-boot-starter-test
test

【第二步】编写测试类,默认自动生成了一个

@SpringBootTest
class Springboot07JunitApplicationTests {
@Autowired
private BookService bookService;
@Test
public void testSave() {
bookService.save();
}
}

2. 基于SpringBoot实现SSM整合

(1)Spring整合MyBatis(复习)

    a.  SpringConfig
                              导入JdbcConfig
                              导入MyBatisConfig

@Configuration
@ComponentScan("com.itheima")
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class, MyBatisConfig.class})
public class SpringConfig {
}

     b.  JDBCConfig
                             定义数据源(加载properties配置项:driver、url、username、password)

#jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db
jdbc.username=root
jdbc.password=itheima
public class JdbcConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String userName;
@Value("${jdbc.password}")
private String password;
@Bean
public DataSource getDataSource() {
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(userName);
ds.setPassword(password);
return ds;
}
}

 c.   MyBatisConfig
                              定义SqlSessionFactoryBean
                              定义映射配置

@Bean
public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource) {
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
ssfb.setTypeAliasesPackage("com.itheima.domain");
ssfb.setDataSource(dataSource);
return ssfb;
}
@Bean
public MapperScannerConfigurer getMapperScannerConfigurer() {
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.itheima.dao");
return msc;
}

(2)SpringBoot整合MyBatis

                    SpringBoot整合Spring(不存在)
                    SpringBoot整合SpringMVC(不存在)
                    SpringBoot整合MyBatis(主要)

①:创建新模块,选择Spring初始化,并配置模块相关基础信息

SpringBoot框架_第22张图片

 ②:选择当前模块需要使用的技术集(MyBatis、MySQL)

​​​​​​​​​​​​​​SpringBoot框架_第23张图片

 ③:设置数据源参数

spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource

注意事项:
               SpringBoot版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区,或在
MySQL数据库端配置时区解决此问题

jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC

④:定义数据层接口与映射配置

@Mapper
public interface UserDao {
@Select("select * from tbl_book where id=#{id}")
Book getById(Integer id);
}

⑤:测试类中注入dao接口,测试功能

@SpringBootTest
class Springboot08MybatisApplicationTests {
@Autowired
private BookDao bookDao;
@Test
public void testGetById() {
Book book = bookDao.getById(1);
System.out.println(book);
}
}

(3)SpringBoot实现ssm整合案例

【第一步】创建SpringBoot工程,添加druid依赖



com.alibaba
druid
1.2.6

【第二步】复制springmvc_11_page工程各种资源(主java类、页面、测试类)

【第三步】删除config包中的所有配置,在BookDao接口上加@Mapper注解

//todo 3 在BookDao接口上加@Mapper注解,让SpringBoot给接口创建代理对象
@Mapper
public interface BookDao {
//...
}

【第四步】将application.properties修改成application.yml,配置端口号和连接参数

server:
port: 80
# todo 4 配置数据库连接参数
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource

【第五步】修改BookServiceTest配置类,进行配置

// todo 5 修改单元测试类,添加@SpringBootTest主键,修复@Test注解导包
@SpringBootTest
public class BookServiceTest {
@Autowired
private BookService bookService;
@Test
public void testGetById(){
Book book = bookService.getById(2); //传递参数1会抛出异常
System.out.println(book);
}
@Test
public void testGetAll(){
List all = bookService.getAll();
System.out.println(all);
}
}

【第六步】在static目录中提供index.html页面,跳转到"pages/books.html" 


最后:运行引导类即可访问

你可能感兴趣的:(spring,boot,tomcat,java)