SpringBoot

一、SpringBoot 简介

  • SpringBoot:build anything、集成大量的第三方库配置、无容器的web应用程序体系结构、“零配置” out of the box
  • 优点:基于Spring、简化编码、简化配置、简化部署、简化监控

二、SpringBoot 快速入门

  • IDEA 构建 SpringBoot 项目并启动测试
    • 打开 IDEA 选择新建 Spring Initializr 项目
    • spring boot1.png
    • 点击下⼀步继续创建,设置项目名,包名,语言描述等信息(特别注意项目名在IDEA 中必须小写):
    • spring boot2.png
    • 下⼀步开发工具里面选择热部署和lombok
    • spring boot3.png
    • web里面选择Spring Web
    • spring boot4.png
    • 设置项目的路径然后点击完成
    • spring boot5.png
    • SpringBoot项目的基本目录结构生成,第⼀时间选择自动导入
    • spring boot6.png
    • 在这个目录下新增一个类
    • spring boot7.png
    • 新增类
    • spring boot8.png
    • 分别新增包和类controller.HelloController
    • spring boot9.png
    • 生成类后编写代码
    • spring boot10.png
    • 打开自动生成的类中的main方法
    • spring boot11.png
    • 选择运行该main方法
    • spring boot12.png
    • 启动项目
    • spring boot13.png
    • 打开浏览器输入地址信息http://localhost:8080/并运行
    • spring boot14.png
    • 到此为止Spring Boot项目搭建完毕

三、SpringBoot的项目结构

  • pom文件

    
    
     4.0.0
     
     
       org.springframework.boot
       spring-boot-starter-parent
       2.2.6.RELEASE
        
     
     com.qfedu
     days01_springboot_demo01
     0.0.1-SNAPSHOT
     days01_springboot_demo01
     Demo project for Spring Boot
     1.8
     
         
           org.springframework.boot
           spring-boot-starter-web
         
         
           org.springframework.boot
           spring-boot-devtools
           runtime
           true
         
         
           org.projectlombok
           lombok
           true
         
         
           org.springframework.boot
           spring-boot-starter-test
           test
           
             
               org.junit.vintage
               junit-vintage-engine
             
           
         
     
     
       
         
           org.springframework.boot
           spring-boot-maven-plugin
         
       
     
    
    
  • src目录结构

    • spring boot15.png
    • 说明:注意Days01SpringbootDemo01Application这个类咱们刚刚在项目向导生成过程中放到了com.qfedu 下,该类是当前项目的主启动类。
    • 我们在 com.qfedu 包下新建的 controller 子包后才建的HelloController类,只有在子包下才会被扫描到 resources 下放的都是资源文件,里面有:
      • static 目录:主要放静态资源;
      • templates目录:里面放模版文件;
      • application.properties文件:主要用来配置当前的 SpringBoot项目。
  • maven构建SpringBoot工程

    • 在maven项目中将当前项目的⽗项目设置为SpringBoot项目,那么当前项目也就是⼀个SpringBoot项目,添加SpringBoot⼀样的依赖即可

四、SpringBoot的启动类

  • @SpringBootApplication注解介绍

    • @SpringBootApplication is a convenience annotation that adds all of the following:
    • @Configuration:Tags the class as a source of bean definitions for the application context.
    • @EnableAutoConfiguration:Tells Spring Boot to start adding beans based on classpath settings, other beans, and various property settings. For example, if spring-webmvc is on the classpath, this annotation flags the application as a web application and activates key behaviors, such as setting up a DispatcherServlet .
    • @ComponentScan:Tells Spring to look for other components, configurations, and services in the com/example package, letting it find the controllers.
  • @Configuration注解介绍

    • @Configuration:Tags the class as a source of bean definitions for the application context.
  • @Bean注解介绍
    对于Spring而言,所有的对象都可以被认为是bean对象,Spring会管理所有的对象

  • starter介绍

    • starter简单介绍

五、SpringBoot的配置文件

  • yml文件的介绍

    • YAML(Yet Another Markup Language)(发音 /ˈjæməl/ ) ⼀种基于Unicode容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言。
    • 适应场景 脚本语言:由于实现简单,解析成本很低,YAML 特别适合在脚本语言中使用序列化:YAML是由宿主语言数据类型直转,的比较适合做序列化。
    • 配置文件:写 YAML 要比写 XML 快得多(无需关注标签或引号),并且比 INI 文档功能更强。由于兼容性问题,不同语言间的数据流转建议不要用 YAML。
    • 语言优点:YAML易于⼈们阅读。 YAML数据在编程语言之间是可移植的。 YAML匹配敏捷语言的本机数据结构。 YAML具有⼀致的模型来⽀持通用工具。 YAML支持单程处理。 YAML具有表现力和可扩展性。 YAML易于实现和使用。
    • YAML 语法:使用空格 Space 缩进表示分层,不同层次之间的缩进可以使用不同的空格数目,但是同层元素⼀定左对齐,即前面空格数目相同(不能使用 Tab,各个系统 Tab对应的 Space 数目可能不同,导致层次混乱)
    • ‘#’表示注释,只能单行注释,从#开始处到行尾
    • 破折号后面跟⼀个空格(a dash and space)表示列表
    • 用冒号和空格表示键值对 key: value 简单数据(scalars,标量数据)可以不使用引号括起来,包括字符串数据。
    • 用单引号或者双引号括起来的被当作字符串数据,在单引号或双引号中使用C风格的转义字符 Sequence of Scalars 简单数据列表
  • yml文件的使用

    • 配置对象数据语法:key:key1: value1key2: value2 或者:key: {key1: value1,key2: value2}。示例代码:
    person:
       name: AAA
       age: 18
       addr: AA
    #或者
    person: {name: AAA,age: 18,addr: AA}
    
    • 注意:key1前面的空格个数不限定,在yml语法中,相同缩进代表同⼀个级别
      配置Map数据同上面的对象写法同上面的对象写法
      配置数组(List、Set)数据语法:key:- value1- value2 或者:key: [value1,value2]。示例代码:
    my:
    city:
     - AAA
     - BBB
     - CCC
     - DDD
     - EEE
    #或者
    my:
    city: [AAA,BBB,CCC,DDD,EEE]
    #集合中的元素是对象形式
    student:
      -name: A
       age: 18
       score: 100
      -name: B
       age: 28
       score: 88
      -name: C
       age: 38
       score: 90
    
    • 注意:value1与之间的 - 之间存在⼀个空格

六、 SpringBoot常用配置

  • 多环境
  • @ConfigurationProperties

七、 SpringBoot整合Mybatis

  • 基本配置

    • pom.xml文件添加依赖
      
         org.mybatis.spring.boot
         mybatis-spring-boot-starter
         1.3.2
      
      
         com.alibaba
         druid
         1.0.28
      
      
         mysql
         mysql-connector-java
      
    
    • 在resources下新增⼀个application.yml
    spring:
       datasource:
         url: jdbc:mysql://localhost:3306/supermarket?useSSL=true&serverTimezone=UTC&characterEncoding=UTF-8
         driver: com.mysql.jdbc.Driver
         username: james
         password: 123456
         type: com.alibaba.druid.pool.DruidDataSource
    mybatis:
         type-aliases-package: com.qfedu.pojo
         mapper-locations: classpath:mapper/*Mapper.xml
    
  • 代码实现

    • 新增⼀个User类
    @Data
    public class User {
       private String uid;
       private String username;
       private String password;
       private String email;
       private String tel;
       private int level;
       private int integral;
       private int ifNew;
    }
    
    • 新增⼀个Controller类
    @RestController
    public class UserController {
       @Resource
       private IUserService userService;
       @GetMapping("/Users")
       public List getAllUsers(){
       return userService.getAllUsers();
      }
    }
    
    • 新增⼀个Service接口
    public interface IUserService {
       List getAllUsers();
    }
    
    • 新增该service接口的实现类
    @Service
    public class UserServiceImpl implements IUserService {
       @Resource
       private IUserDao userDao;
       @Override
       public List getAllUsers() {
           return userDao.getAllUsers();
       }
    }
    
    • 新增一个Dao接口
    @Mapper
    public interface IUserDao {
       List getAllUsers();
    }
    
    • 在resources下新增⼀个mapper目录,新增⼀个 UserMapper.xml 文件
    
    
        
        
           
         
         
             update users set username = #{username}, password = #{password}, tel=#{tel}, addr=#{addr} where uid = #{uid}
         
         
             delete from users where uid = #{uid}
         
         
             insert into users values(null, #{username}, #{password}, #{tel}, #{addr})
         
         
             delete from users where uid = #{uid}
         
    
    
  • 看看数据库的表结构

  • spring boot16.png
  • 看看表里的数据

  • spring boot17.png
  • 看看运行结果:浏览器中访问http://localhost:8080/Users

  • spring boot18.png
  • 到此为止,SpringBoot 整合 MyBatis 完成

八、SpringBoot 整合 JSP

  • 基本的配置
    • 修改 pom.xml 文件,添加新的依赖
      
      
         javax.servlet
         javax.servlet-api
         provided
      
      
      
         javax.servlet
         jstl
      
      
      
         org.springframework.boot
         spring-boot-starter-tomcat
         provided
      
      
      
         org.apache.tomcat.embed
         tomcat-embed-jasper
         provided
      
    
  • 修改yml文件: 新增 spring mvc 的前后缀
    spring:
       mvc:
       view:
       prefix: /WEB-INF/jsp/
       suffix: .jsp
    
  • 代码实现
    • 修改controller.java
    @Controller
    public class UserController {
       @Resource
       private IUserService userService;
       @GetMapping("/Users")
       @ResponseBody
       public List getAllUsers(){
           return userService.getAllUsers();
       }
       @GetMapping("/UsersPage")
       public String showUsers(Model model){
           model.addAttribute("list", userService.getAllUsers());
           return "users";
       }
    }
    
  • 修改pom文件的打包方式为war,在 main下新增目录webapp,以及WEB-INF目录,在WEB-INF下新增 JSP 目录,JSP 目录下新增 Users.jsp 文件
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
       users
    
    
        

    this is users jsp page

    <% out.println("hello"); %>
    ${u.uid} ${u.username} ${u.password} ${u.tel} ${u.email} ${u.level}
  • 访问地址:http://localhost:8080/UsersPage
  • spring boot19.png
  • 至此 SpringBoot 整合 JSP 配置完成

你可能感兴趣的:(SpringBoot)