SpringBoot快速入门 2

简介: SpringBoot快速入门

6 配置热部署

热启动会消耗系统性能,开启时慎重

部署完成使用时快捷键:ctrl + f9 手动刷新,一般可以Ctrl+s就是自动刷新


我们在开发中反复修改类、页面等资源,每次修改后都是需要重新启动才生效,这样每次启动都很麻烦,浪费了大 量的时间,我们可以在修改代码后不重启就能生效,在 pom.xml 中添加如下配置就可以实现这样的功能,我们称 之为热部署

<!--热部署配置--> 
<dependency>    
    <groupId>org.springframework.boot</groupId>    
    <artifactId>spring-boot-devtools</artifactId> 
</dependency>

注意:IDEA进行SpringBoot热部署失败原因

出现这种情况,并不是热部署配置问题,其根本原因是因为Intellij IEDA默认情况下不会自动编译,需要对IDEA进 行自动编译的设置,如下

7 SpringBoot起步依赖原理分析

  • 在spring-boot-starter-parent中定义了各种技术的版本信息,组合了一套最优搭配的技术版本。
  • 在各种starter中,定义了完成该功能需要的坐标合集,其中大部分版本信息来自于父工程。
  • 我们的工程继承parent,引入starter后,通过依赖传递,就可以简单方便获得需要的jar包,并且不会存在版本冲突等问题。

8 application.yml配置文件

8.1 yml配置文件简介

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,

就可以使用 application.properties或者application.yml(application.yaml)进行配置。


SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件。其中,application.properties文件是键值对类型的文件,之前一直在使用,所以此处不在对properties文件的格式 进行阐述。除了properties文件外,SpringBoot还可以使用yml文件进行配置,下面对yml文件进行讲解。


YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数 据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导 入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简 洁。

YML文件的扩展名可以使用.yml或者.yaml。

8.2 yml语法注意事项

  • 大小写敏感
  • 数据值前边必须有空格,作为分隔符
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)。
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • ‘’#” 表示注释,从这个字符一直到行尾,都会被解析器忽略。

8.3 yml配置文件的语法

8.3.1 配置普通数据(纯量)

语法: key: value 示例代码

name: haohao
msg1: 'hello \n world'  # 单引忽略转义字符
msg2: "hello \n world"  # 双引识别转义字符

注意:value之前有一个空格

8.3.2 配置对象或者Map数据

语法:

key:

key1: value1

key2: value2

或者:

key: {key1: value1,key2: value2} 示例代码

person:  
  name: haohao  
  age: 31  
  addr: beijing
#或者
person: {name: haohao,age: 31,addr: beijing}

注意:key1前面的空格个数不限定,在yml语法中,相同缩进代表同一个级别

8.3.3 配置数组、List、Set数据

语法:

key:
  - value1
  - value2 
# 或者:
key: [value1,value2]

示例代码

coldluy:  
  - beijing  
  - tianjin  
  - shanghai  
  - chongqing  
# 或者
coldluy: [beijing,tianjin,shanghai,chongqing]
# 集合中的元素是对象形式 
student:  
  - name: zhangsan    
    age: 18    
    score: 100  
  - name: lisi    
    age: 28    
    score: 88  
  - name: wangwu    
    age: 38    
    score: 90

注意:value1与之间的 - 之间存在一个空格

8.3.4 参数引用

name: lisi 
person:
  name: ${name} # 引用上边定义的name值

8.4 获取yml文件中的数据

方式1:使用@Value

我们可以通过@Value注解将配置文件中的值映射到一个Spring管理的Bean的字段上

例如:

application.yml配置

person:  
  name: zhangsan  
  age: 18

java代码

@Controller 
public class QuickStartController {
    @Value("${person.name}")    
    private String name;    
    @Value("${person.age}")    
    private Integer age;
    @RequestMapping("/quick")    
    @ResponseBody    
    public String quick(){        
        return "springboot 访问成功! name="+name+",age="+age;    
    }
}

方式2:使用Evironment

application.yml配置

person:
  name: tom
  age: 23

java代码

@RestController
public class QuickController {
    @Autowired
    private Environment env;
    @GetMapping("/getPropInfo")
    public String getPropInfo(){
        return "查询结果:"+env.getProperty("person.name");
    }
}

方式3:使用@ConfigurationProperties

通过注解@ConfigurationProperties(prefix=”配置文件中的key的前缀”)可以将配置文件中的配置自动与实体进行映 射

application.yml配置

person:  
  name: zhangsan  
  age: 18

java代码

@Controller 
@ConfigurationProperties(prefix = "person") 
public class QuickStartController {
    private String name;    
    private Integer age;
    @RequestMapping("/quick")    
    @ResponseBody    
    public String quick(){        
        return "springboot 访问成功! name="+name+",age="+age;    
    }
    public void setName(String name) {        
        this.name = name;    
    }
    public void setAge(Integer age) {        
        this.age = age;    
    } 
}

可以注入子类

注意:使用@ConfigurationProperties方式可以进行配置文件与实体字段的自动映射,但需要字段必须提供set方 法才可以,而使用@Value注解修饰的字段不需要提供set方法

9 约定优于配置怎么体现的

SpringBoot解决了配置文件和业务逻辑不停切换的问题

使用SrpingBoot就不需要配置文件了,直接使用JAVA文件+注解开发

使用注解(约定)作为配置文件

@Configuration
public class MyFilterConfiguration {
    @Bean
    public FilterRegistrationBean myFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new MyFilter());//添加过滤器
        registration.addUrlPatterns("/");//设置过滤路径,/所有路径
        registration.addInoldluParameter("name", "alue");//添加默认参数
        registration.setName("MyFilter");//设置优先级
        registration.setOrder(1);//设置优先级
        return registration;
    }
}

使用xml(配置文件) 作为配置文件

  1. @Configuration和@Bean注解说明:

@Configuration 标注在类上,相当于把该类作为spring的xml配置文件中的 ,作用为:配置spring容器(应用上下文),上文中在MyFilterConfiguration类上添加了该注解,相当于创建了一个beans.xml配置文件里面的内容是

Xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd
    http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd" default-lazy-inoldlu="false" >
</beans>
  1. @Bean标注在方法上(返回某个实例的方法),等价于spring的xml配置文件中的,作用为:注册bean对象。

@Bean注解在返回实例的方法上,如果未通过@Bean指定bean的名称,则默认与标注的方法名相同。


@Bean注解默认作用域为单例singleton作用域,可通过@Scope(“prototype”)设置为原型作用域


上文中在myFilterRegistration()方法上加了@Bean注解,表示在spring启动的时候会执行该方法并将结果作为一个bean注册到容器中,该bean的名字是”myFilterRegistration”

目录
相关文章
|
人工智能 分布式计算 大数据
FFA 2023 「流式湖仓」专场:从技术原理到应用实践打造流式湖仓新架构
今年 Flink Forward Asia(以下简称 FFA ) 重新回归线下,将于 12 月 8 - 9 日在北京望京凯悦酒店举办。Flink Forward Asia 2023 大会议程已正式上线!
1308 0
FFA 2023 「流式湖仓」专场:从技术原理到应用实践打造流式湖仓新架构
|
12月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
511 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
8月前
|
数据可视化 数据挖掘 Java
报表工具怎么选?8款主流报表工具大测评!
报表工具怎么选?8款主流报表工具大测评!
|
11月前
|
数据采集 测试技术
SPAR:融合自对弈与树搜索的高性能指令优化框架
SPAR框架通过自对弈和树搜索机制,生成高质量偏好对,显著提升了大语言模型的指令遵循能力。实验表明,SPAR在指令遵循基准测试中表现优异,尤其在模型规模扩展和判断能力方面展现出显著优势。
252 5
|
Java Maven Kotlin
idea maven创建kotlin项目
本文介绍了在IntelliJ IDEA中使用Maven创建Kotlin项目的步骤,包括在`pom.xml`文件中添加Maven中央仓库、配置`kotlin-maven-plugin`插件、指定源目录、添加测试插件和执行插件,以及添加Kotlin测试依赖和标准库依赖。文中还提到了如何通过更换镜像或使用代理来解决依赖下载速度慢的问题,并展示了运行示例代码的截图。
729 4
idea maven创建kotlin项目
|
Java Maven Spring
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
这篇文章介绍了在IntelliJ IDEA社区版中创建Spring Boot项目的三种方法,特别强调了第三种方法的详细步骤。
10671 0
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
|
监控 Java 调度
【Java学习】多线程&JUC万字超详解
本文详细介绍了多线程的概念和三种实现方式,还有一些常见的成员方法,CPU的调动方式,多线程的生命周期,还有线程安全问题,锁和死锁的概念,以及等待唤醒机制,阻塞队列,多线程的六种状态,线程池等
1126 6
【Java学习】多线程&JUC万字超详解
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
JSON Java Maven
Springboot快速入门
Springboot快速入门
140 0
|
监控 IDE Java
探索 IntelliJ IDEA 中 Spring Boot 运行配置选项及其作用
探索 IntelliJ IDEA 中 Spring Boot 运行配置选项及其作用
1661 0