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”

目录
相关文章
|
NoSQL Java 数据库连接
SpringBoot快速入门 3
SpringBoot快速入门
152 0
|
前端开发 Java 数据库连接
SpringBoot快速入门 1
SpringBoot快速入门
97 1
|
20天前
|
XML 安全 Java
SpringBoot入门(1) - SpringBoot简介
SpringBoot入门(1) - SpringBoot简介
29 3
|
2月前
|
NoSQL Java Redis
SpringBoot的入门(一)
SpringBoot的入门(一)
|
2月前
|
监控 Java Spring
SpringBoot的入门(四)
SpringBoot的入门(四)
|
5月前
|
JSON Java Maven
Springboot快速入门
Springboot快速入门
42 0
|
6月前
|
运维 监控 Java
SpringBoot入门知识
SpringBoot入门知识
62 0
|
6月前
|
Java Maven
SpringBoot快速入门
SpringBoot快速入门
87 0
|
Cloud Native Java Go
gPRC与SpringBoot整合教程
gPRC与SpringBoot整合教程
108 0
|
JSON Java 数据格式
从零玩转SpringBoot3-快速入门2
从零玩转SpringBoot3-快速入门
146 0