springboot基础了解,精华知识总结,详细介绍,不太了解springboot的可以看过来了!

springBoot

入门

spring boot概念:

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。 -使用springboot以后,搭建一个spring应用和开发变得很简单
    该框架使用了特定的方式(继承r,约定优先于配置)来进行配置
    
    Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。 
    
    

springboot的作用

简单而言,即Spring Boot使编码更简单,使配置更简单,使部署更简单,使监控更简单。!
​
Springboot就是为了简化spring应用搭建,开发,部署,监控的开发工具。
​
无需手动管理依赖jar包的版本
​
spring-boot-starter-web:web支持,其实就是springmvc简化使用。
Spring-boot-starter-jdbc:springboot对jdbc支持
Spring-boot-starter-data jpa:springboot对data jpa支持
Spring-boot-starter-mybatis:springboot对mybatis支持
Spring-boot-starter-test:springboot对test支持
Spring-boot-starter-redis
Spring-boot-starter-es
Spring-boot-starter-sorl

第一个springboot项目

1.建一个父项目,删除src文件
    1.1 pom.xml中设置package类型为pom
2.创建一个子项目模块
3.父项目pom中导入文档中的包
4.启动类配置
5.Controller

tomcat跑哪去了?

spring web 模块 内置了tomcat
        
    <dependencies>
        <!--添加spring-boot-starter-web依赖-->
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
​

@SpringBootApplication到底干了什么?

是一个组合注解  主要扫描当前启动类下面所有的需要被spring管理的bean,加载到spring容器中
​
    扫描就是扫描App类的包,就是基础包,扫描这个类一下的所有包

springboot 父依赖有什么用?

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>   //把所有的版本的打包了, 管理了整个spring的maven生态链 ,整个一套maven都被管理  
    </parent>

为什么main方法就能启动项目

1.找到组合注解
2.扫描bean加载到容器中
3.启动tomcat并运行

springboot的运行方式

方式一:main方法启动   在启动类中启动类(application)中点击启动   右边工具类点击 三角按钮 或者 甲壳虫(debug,推荐使用)
​
方式二: 使用maven命令 导入插件 先clean清理  在package打包 application文件会被打成一个jar包   打开jar包出现黑窗口 输出命令 jar -jar spring提示 
(小细节:启动先关闭启动关闭方式一否则会冲突)     ====>在linux系统中使用   +&(申明是后台启动,否则窗口关了就没了)
插件:
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
​
方式三:maven插件命令  本文件  Plugins -> spring-boot ->spring-boot:run   (前提是装了插件)

springboot的热部署

介绍
在我们编写代码的过程中,有时候即使修改输出内容也需要重启系统非常的麻烦,可以使用spring-boot-devtools来实现热部署
​
spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。
​
其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类(自己写的),称为  restart ClassLoader
​
,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)
使用
添加依赖包: 
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
           <scope>true</scope>
</dependency>
​
​
添加spring-boot-maven-plugin:
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!--fork :  如果没有该项配置,可能devtools不会起作用,即应用不会restart -->
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
   </build>
(plugin)可以直接放在打包的plugin标签中
​
​
修改代码之后点击   最上面一排工具栏 Build ==>build project(锤子)   或者 使用快捷键 ctrl +F9  会弹出一个窗口  勾上以后不在询问

springboot的配置

Springboot的标准目录

    src
        --main
            --java
            --resources
                --static文件夹(放置静态文件的img,css,js)
                --templates  (用来放置模板文件的  jsp-->通过这个模板文件生成(servlet)java代码  自己的模板thymeleaf(html文件))
                application.properties(或者application.yml) 必须是其中之一,如果两个都有,那么优先properties文件生效
                    如果创建properties文件没有启动图片 那么说明命名有问题
        --test
            java
​

Springboot的application配置

SpringBoot使用一个全局的配置文件,配置文件名是固定的;
​
•application.properties  -传统方式,不太优美
​
•application.yml -推荐使用
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
​
YAML做配置一门语言:
​
    以前的配置文件;大多都使用的是  xxxx.xml文件还有properties;
​
    YAML:以数据为中心,比json、xml等更适合做配置文件;
​
    YAML:配置例子
​
    server:
      port: 8081
​
    XML:
​
    <server>
        <port>8081</port>
    </server>
properties:
 server.port =8081
 
​

yml语法

k:(空格)v:表示一对键值对(空格必须有);
​
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
​
    server:
        port: 8081
        
    path: /hello
​
属性和值也是大小写敏感;      
        
        
        
        4.3.2.值的写法
1)字面量:普通的值(数字,字符串,布尔)
​
    k: v:字面直接来写;
​
        字符串默认不用加上单引号或者双引号;
​
        "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
​
                name:   "zhangsan \n lisi":输出;zhangsan 换行  lisi
​
        '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
​
                name:   ‘zhangsan \n lisi’:输出;zhangsan \n  lisi
​
2)k: v:在下一行来写对象的属性和值的关系;注意缩进
​
        对象还是k: v的方式
​
    friends:
            lastName: zhangsan
            age: 20
​
行内写法:
​
    friends: {lastName: zhangsan,age: 18}
​
​
3)数组(List、Set):
​
用- 值表示数组中的一个元素
​
    pets:
     - cat
     - dog
     - pig
     pets: [cat,dog,pig]
     
     
     ==========书写数据库密码的时候不能以0开头

Profile多环境支持

为什么需要多环境支持?
​
        一套代码要在多种环境运行(开发,测试,上线),所以我们的配置文件要支持多种环境
        
多profile 文件
​
    application-{profile}.properties/yml
​
    application-dev.yml
​
    application-test.yml
    
默认使用application.properties文件
yml支持多文档模块模式的语法
Application.yml
​
server:
  port: 8081
spring:
  profiles:
    active: prod   (活跃==>指定让哪一个生效)
​
---
server:
  port: 8083
spring:
  profiles: dev
​
​
---
​
server:
  port: 8084
spring:
  profiles: prod  #指定属于哪个环境
激活特定环境
4.4.4.激活特定环境
    1、在配置文件中指定  spring.profiles.active=dev
​
    2、命令行: 部署环境
​
        java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod;
​
        可以直接在测试的时候,配置传入命令行参数
​
    3、虚拟机参数; 开发环境
​
        -Dspring.profiles.active=dev

整合测试-springboottest

1.导包        (这个父项目中已经有了)
        <dependency>
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-web</artifactId>   
        </dependency>
    
            <dependency>
===>只用导这个       <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-test</artifactId>
            </dependency>
            
2.创建启动类
        创建cn.itsource.springboot.Application
            Application类加上@SpringbootApplication注解
            main方法中 SpringApplication.run ( Application.class,args ) 启动方法
            
3.接口测试类  两个注解  @runwith(springRunnner.class)      @SpringBootTest(classes=Application.class)<==参数填启动类的class文件
    之前是指向核心配置文件  目的都是启动容器 并加载到容器中去

SpringWeb

springboot返回json

(写在类上面)@ResponseBody//让所有的方法都返回json 且禁止页面跳转xxxxxxxxxx @Responsebody@ResponseBody//让所有的方法都返回json 且禁止页面跳转
@RestController  等于 @controller 加上 @responsebody
配置了这个注解这个页面只能返回json

模板语言

    jsp       thymeleaf    FreeMark(FreeMark Template language)
    .jsp        .html       ftl
    
    springboot推荐thymeleaf   作为了解
            后面会学vue.js    学会vue+elementUI前段就是cv
            
    导入命名空间  不导用不了       
    xmlns:th="http://www.thymeleaf.org"
    
    <!DOCTYPE html>
<html lang="en"   xmlns:th="http://www.thymeleaf.org">   <====导入命名空间
​
后台准备数据:
        public String save(Model model){
            model.addAttribute("success","陈宫");
​
            return "";
        }
接收数据:
        <body>
                <!--获取后台返回的msg数据-->
                <div th:text="${success}">哈哈哈哈哈哈</div>
        </body>
    导包!!
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <properties>
            <thymeleaf.version>3.0.9.RELEASE</thymeleaf.version>
        <!-- 布局功能的支持程序  thymeleaf3主程序  layout2以上版本 -->
        <!-- thymeleaf2   layout1-->
        <thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
    </properties>

springboot搭建ssm并且操作数据库

配置mapper层

配置文件:
​
#配置四大精钢
spring:
  datasource:
    username: root
    password: sunmin520
    url: jdbc:mysql:///springboot_ssm
    driver-class-name: com.mysql.jdbc.Driver
#配置mybaties的信息
mybatis:
  mapper-locations: classpath:cn/itsource/springboot/mapper/*.xml
  type-aliases-package: cn.itsource.springboot.domain
#日志
logging:
  level:
    cn:
      itsource: trace
​
​
​
启动类注解
@SpringBootApplication
//管理接口  注意一定要加上  扫描mapper层
@MapperScan("cn.itsource.springboot.mapper")

事物的传播机制

@Transactional//@Transactional 专门用来管理事物的注解,底层基于aop
​
​
0.REQUIRED ------ 就是如果老婆做饭了,你就吃老婆做的饭;如果老婆没有做饭,你就自己做饭吃,反正你就是要吃饭(反正要在事务中运行);
​
1.SUPPORTS ------ 如果老婆做饭了,你就吃老婆做的饭;如果老婆没有做饭,你就不吃(不一定非要在事务中运行);
​
2.MANDATORY ------ 非要吃老婆做的饭,老婆要是没有做饭,你就大发脾气,典型的家暴男;
​
3.REQUIRES_NEW ------ 劳资非要吃自己做的饭,就算老婆把饭做好了,你也不吃老婆做的;
​
4.NOT_SUPPORTED ------ 劳资就是不吃饭,就算老婆把饭做好了,我也不吃;
​
5.NEVER ------ 劳资就是不吃饭,如果老婆把饭做好了,我还要发脾气;
​
6.NESTED ------ ;
​

猜你喜欢

转载自blog.csdn.net/Libigtong/article/details/134289142