首页 > 其他分享 >【框架】SpringBoot

【框架】SpringBoot

时间:2022-11-11 22:14:15浏览次数:43  
标签:java SpringBoot 框架 spring jar private properties

SpringBoot基础

基本工程

快速建立SpringBoot工程(Spring Intailizr)

image
image
image
image
image
image

工程结构

  1. application.properties配置文件
  2. templates 放web页面
  3. static静态资源 css、js文件等等

工程配置分析(pom.xml)

  • Spring程序和SpringBoot程序对比
类/配置文件 Spring SpringBoot
pom文件中的坐标 手动添加 勾选添加
web3.0配置类 手动制作
Spring/SpringMVC配置类 手动制作
控制器类 手动制作 手工制作

快速启动

  1. 右侧 → Maven → Lifecycle → package
  2. 左侧 → target → 对应工程.jar → 右键 → Open in → Explorer (打开所在文件夹)
  3. 该jar包即可发给前端工作人员
  4. 在该文件夹路径框直接输入cmd + enter
  5. 输入:java -jar 对应工程.jar(这个打个首字母 + Tab即可补全文件名)

注意事项
jar支持命令行启动需要依赖maven插件支持,请确认打包时是否具有SpringBoot对应的maven插件
这个插件应该在SpringBoot建立时自动导入的。

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

pom.xml分析

SpringBoot起步依赖

  1. 版本管理 (若干properties + 若干依赖)
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
  1. 依赖
    <dependencies>
        <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>
            <scope>test</scope>
        </dependency>
    </dependencies>

主启动类/引导类

image

  • 目前pom.xml是web依赖,那么启动类启动就是web程序

换依赖

  1. 起步依赖中 排除依赖
  2. 添加新依赖,不需要添加版本号
  • 比如Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换Jetty

基础配置

SpringBoot有多种配置方式

  1. properties
  2. yaml
  3. yml

存在多种配置时,优先级:

  1. properties
  2. yml
  3. yaml

自动提示功能解决方案

image
image

yaml

基本语法

  • key: value;kv之间有空格
  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • '#'表示注释
  • 字符串无需加引号,如果要加,单引号''、双引号""表示字符串内容会被 转义、不转义

数据类型

  • 字面量:单个的、不可再分的值。date、boolean、string、number、null
k: v
  • 对象:键值对的集合。map、hash、set、object
#行内写法:  

k: {k1:v1,k2:v2,k3:v3}

#或

k: 
  k1: v1
  k2: v2
  k3: v3
  • 数组:一组按次序排列的值。array、list、queue
#行内写法:  

k: [v1,v2,v3]

#或者
# - 代表一个元素
k:
 - v1
 - v2
 - v3

实例

@Data
public class Person {
    private String userName;
    private Boolean boss;
    private Date birth;
    private Integer age;
    private Pet pet;
    private String[] interests;
    private List<String> animal;
    private Map<String, Object> score;
    private Set<Double> salarys;
    private Map<String, List<Pet>> allPets;
}

@Data
public class Pet {
    private String name;
    private Double weight;
}

用yaml表示以上对象

person:
  userName: zhangsan #如何用双引号就不转义,但是用单引号 转义字符会被转义
  boss: false
  birth: 2019/12/12 20:12:33
  age: 18
  pet: 
    name: tomcat
    weight: 23.4
  interests: [篮球,游泳]
  animal: 
    - jerry
    - mario
  score:
    english: 
      first: 30
      second: 40
      third: 50
    math: [131,140,148]
    chinese: {first: 128,second: 136}
  salarys: [3999,4999.98,5999.99]
  allPets:
    sick:
      - {name: tom}
      - {name: jerry,weight: 47}
    health: [{name: mario,weight: 47}]

读取

  1. 基本数据类型
@Value("$lesson")   //yaml中lesson:SpringBoot
private String lesson;
  1. 数组
@Value("$subject[0]")   //yaml如下
private String subject0; //java
subject:
  - java
  - 前端
  - 大数据
@Value("$subject[0]")   //yaml如下
private String subject0; //java
enterprise
  name:itcast
  age:16
  tel:4006184000
  subject:
  - java
  - 前端
  - 大数据
  1. 直接加载全部
@Autowired
private Environment environment;

public void get(){
	System.out.println(environment.getProperty("enterprise.name"));
}
enterprise
  name:itcast
  age:16
  tel:4006184000
  subject:
  - java
  - 前端
  - 大数据
  1. @ConfigurationProperties + @Component
    假设有配置文件application.properties
mycar.brand=BYD
mycar.price=100000

只有在容器中的组件,才会拥有SpringBoot提供的强大功能

@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
	private String brand;
	private Integer price;
}

set...

get...

toString...
//调用
@Autowired
private Car car;

public void get(){
	System.out.println(car);
}

多环境配置

分新旧两种写法,多个环境之间以“---”隔开

#设置启用的环境
spring:
  profiles:
    active: test
    

---
#开发
spring:
  profiles:dev
server:
  port: 80
  
---
#生产
spring:
  profiles:pro
server:
  port: 81
  
---
#测试 过时格式
spring:
  profiles:test
server:
  port: 82

---
#推荐格式 
spring:
  config:
    activate:
      on-profile: other
server:
  port: 83

额外说一下properties相关写法
application.properties中
spring.profiles.active=dev

application-dev.properties中
server.port=8081

多环境命令行启动参数设置

  • 带参数启动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

多环境开发控制(Maveb和Boot的兼容问题)

  • 1.maven设置多环境
    image

  • 2.SpringBoot中引用maven属性
    image

  • 3.执行maven打包指令

  • imageimage

  • 4.image

配置文件分类

  • SpringBoot中4级配置文件
    target(文件路径)下
    1级 file:config/application.yml
    2级 file:application.yml
    resources(就是类路径)下
    3级 classpath:config/application.yml
    4级 classpath:application.yml
  • 作用
    1. 1级和2级留作系统打包后设置通用属性
    2. 3级和4级用于系统开发阶段设置通用属性

整合第三方技术

SpringBoot整合JUnit

回顾Spring整合JUnit

image

SpringBoot整合JUnit

image

  • 名称:@SpirngBootTest
  • 类型:测试类注解
  • 位置:测试类定义上方
  • 作用:设置JUnit加载的SpringBoot启动类
  • 范例:
@SpringBootTest(classes = SpringBoot07JunitApplication.class)
class SpringBoot07JunitApplicationTests{
}
  • 相关属性 classes:设置SpringBoot启动类
  • 注意事项:如果测试类在SpringBoot启动类的包或者子包中,可以省略启动类的设置,也就是省略classes的设定

SpringBoot实现SSM整合

内容:

  • SpringBoot整合Spring(不存在)
  • SpringBoot整合SpringMVC(不存在)
  • SpirngBoot整合Mybatis(主要工作)

回顾Spring整合Mybatis

  • SpringConfig
    • 导入JdbcConfig
    • 导入MybatisConfig
      image
  • JDBCConfig
    • 定义数据源(加载properties配置项:driver、url、username、password)
      image
  • MyBatisConfig配置
    • 定义SqlSessionFactoryBean
    • 定义映射配置
      image
      image

SpringBoot整合Mybatis

步骤:

  1. image

  2. image

  3. image

  4. image

  5. image

标签:java,SpringBoot,框架,spring,jar,private,properties
From: https://www.cnblogs.com/mlstudyjava/p/16798239.html

相关文章

  • scrapy框架运行报错:AttributeError: module 'OpenSSL.SSL' has no attribute 'SSLv3_M
    从网上下了爬虫代码,提示:AttributeError:module‘OpenSSL.SSL’hasnoattribute‘SSLv3_METHOD’网上有很多其他找不到模块的解决方法,尝试了都没有用。最后在bing搜......
  • 【框架】984- 2021 年最佳 JavaScript 框架
    作者|OliviaCuthbert译者|Sambodhi策划|刘燕据Stackoverflow的2021年开发者调查,JavaScript已连续第八年成为使用最多的语言,有67.7%的受访者选择它。之所以如......
  • vue框架跨域请求之axios
    1、打开hbuilderx,【文件】==》【新建】==》【项目】,创建vue项目。   2、创建后的vue项目结构如下所示,打开【package.json】配置文件,添加axios相关依赖。   ......
  • 深度学习新框架:OneFlow快速上手教程
    计算机视觉研究院专栏作者:Edison_GOneFlow我还没有正式试用,但是通过资料查找和代码解读,感觉上手还是比较简单,后期有机会和大家分享详细代码解读。快速上手安装OneFlow稳定......
  • Yolo框架大改 | 消耗极低的目标检测新框架(附论文下载)
    计算机视觉研究院专栏作者:Edison_G使用常规深度神经网络到脉冲神经网络转换方法应用于脉冲神经网络域时,性能下降的很多,深入分析后提出了可能的解释:一是来自逐层归一化的效率......
  • uniapp之uni-starter小程序多端研发框架搭建与项目实践
    随着移动互联网的飞速发展,无数移动APP琳琅满目;在移动App的发展的基础上,衍生了小程序、轻应用技术,它随时可用,但又无需安装卸载。小程序是一种不需要下载安装即可使用的应用,......
  • 什么是工作流开源框架?可提高办公效率吗?
    如果要提高办公效率,那么采用什么样的软件可以实现?低代码开发平台是近些年得到不少企业喜爱的一种提高效率的软件平台,拥有表单设计、工作流开源框架、微服务架构、代码开发......
  • 在IDEA中新建一个SpringBoot项目(两种方法)
    方法一、使用Springinitializr快速构建1.首先创建一个新的project,点击【File】->【New】->【Project】(如果是最开始进入idea软件界面,就是点击【CreateNewProject】)......
  • 框架介绍-软件架构和资源分类
    软件架构javaWeb:使用java语言开发基于互联网的项目软件架构:1.c/s:Client/Server客户端/服务器端在用户本地有一个客户端程序在远程有一个服务器端程序如:QQ迅雷.......
  • springboot获取项目的绝对路径和根目录
    参考:https://blog.csdn.net/f45056231p/article/details/88692444springboot获取项目的绝对路径和根目录Harvey5月前⋅11142阅读springboot获取当前项目路径的地址......