springboot⼊门及application.yaml核⼼配置⽂件
springboot⼊门及application.yaml核⼼配置⽂件
什么是SpringBoot
SpringBoot是由Pivotal团队在2013年开始研发、2014年4⽉发布第⼀个版本的全新开源的轻量级框架。springboot是⼀个快速开发的框架,可以迅速搭建⼀套基于spring框架体系的应⽤。
SpringBoot优点
1. 独⽴运⾏Spring项⽬
Spring boot 可以以jar包形式独⽴运⾏,运⾏⼀个Spring Boot项⽬只需要通过java -jar xx.jar来运⾏
2. 内嵌servlet容器
Spring Boot可以选择内嵌Tomcat、jetty或者Undertow,这样我们⽆须以war包形式部署项⽬
3. 提供starter简化Maven配置
spring提供了⼀系列的start pom来简化Maven的依赖加载
4. ⾃动装配Spring
SpringBoot会对SpringBoot启动类的⼦包下的类进⾏⾃动装配
5. 准⽣产的应⽤监控
SpringBoot提供基于http ssh telnet对运⾏时的项⽬进⾏监控
6. ⽆代码⽣产和xml配置
SpringBoot不是借助与代码⽣成来实现的,⽽是通过条件注解来实现的
什么是微服务
微服务是⼀种⽤于构建应⽤的架构⽅案。微服务架构有别于更为传统的单体式⽅案,可将应⽤拆分为多个核⼼功能。每个功能都被称为⼀项服务,可以单独构建和部署,各项服务在⼯作式不会相互印象
springboot与微服务的关系
spring Cloud依赖于springboot,spring boot专注于快速开发个体微服务,spring Cloud是关注全局的微服务协调治理框架SpringBoot⼊门
1. New Project
2. 点击Spring Initializr
3. 创建项⽬名称(jdk版本、及包名等)
4. 场景依赖选择界⾯
5. 存放位置
6. springboot项⽬会默认⽣成项⽬启动类、存放静态资源和页⾯的⽂件夹、编写项⽬配置的配置⽂件以及进⾏项⽬单元测试的测试类
7. 查看⾃动⽣成的启动类
package com.sheep;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
properties是什么文件SpringApplication.run(DemoApplication.class, args);
}
@SpringBootApplication:表⽰当前类SpringBoot的⼊⼝,Application类的存放位置必须是其他相关业务类的存放位置的⽗级。
8. l中查看⾃动⽣成添加的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.sheep</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>sheep Spring Boot project</description>
<properties>
<java.version>11</java.version>
</properties>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
springboot依赖管理:
spring-boot-starter-parent:在spring-boot-starter-parent的⽗依赖spring-boot-dependencies中对框架的依赖⽂件进⾏了统⼀版本号管理;
启动器:
spring-boot-starter-web:web依赖启动器,添加后springboot框架会⾃动将web所依赖的包全部导⼊
spring-boot-devtools:热部署依赖启动器,· · · devtools所依赖的包全部导⼊
spring-boot-starter-test:单元测试依赖启动器,· · · test所依赖的包全部导⼊
单元测试中的注解:
@RunWith(SpringRunner.class) //测试运⾏器,并加载SpringBoot测试注解
@SpringBootTest //标记单元测试类,并加载项⽬的上下⽂环境ApplicationContext
9. 编写⼀个Controller
package ller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/hello")
public class HelloController {
@GetMapping("/hello")
@ResponseBody
public String hello(){
return "hello spring boot";
}
10. 运⾏
application.yaml核⼼配置⽂件
概念
1、yaml⽂件格式是SpringBoot⽀持的⼀种JSON超⽂本格式,相对于传统的properties⽂件格式,yaml⽂件以数据为核⼼,是⼀种更为直观且容易被计算机识别的数据序列化格式,application.yaml和application.properties⼯作原理是⼀样的,只不过yaml格式的配置⽂件更加简洁。
2、xxx.yaml和xxx.properties是全局配置⽂件可以对SpringBoot⼀些默认配置只进⾏修改,在.yaml和.properties中可以对系统属性、环境变量、命令参数等信息进⾏更改配置,在springboot中推荐使⽤.yaml的格式进⾏配置。
语法
c++课程设计报告
properties语法:key=value
yaml语法:key: value
⼤⼩写敏感
使⽤缩进表⽰层级关系
缩进时不允许使⽤Tab键,只允许使⽤空格。
缩进的空格数⽬不重要,只要相同层级的元素左侧对齐即可
普通写法
name: sheep
对象写法
# 写法⼀
student1: {name: sheep,age: 3}
# 写法⼆
student2:
name: sheep
age: 3
数组写法
# 写法⼀
# list
pets2: [cat,dog,pig]
# map
pets2: {cat: 12,dog: 13,pig: 14}
# 写法⼆
# list
pets1:
- cat
- dog
# map
pets2:
cat: 12
dog: 13
pig: 14
多⽂档模块
server:
prot: 8080
---
server:
prot: 8081
---
server:
port: 8082
属性注⼊
1、使⽤@ConfigurationProperties(prefix = "")对属性注⼊值(SpringBoot⾃带注解)
punishyaml
person:
name: 梅西
age: 33
happy: true
birth: 2000/08/12
maps: {k1: v1,k2: v2}
lists:
- code
- football
- baesball
- boxing
- outdoor
dog:
name: 旺财
java随机生成四位数age: 6
javaBean
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
2、使⽤@Value()对属性赋值(Spring框架注解)
JavaBean
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class Person {
@Value("梅西")
private String name;
@Value("33")
private Integer age;
private Boolean happy;
cupboarddry什么意思private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
3、两种注解对⽐
@ConfigurationProperties与@Value
对⽐点@ConfigurationProperties@Value
底层框架SpringBoot Spring
功能批量注⼊配置⽂件中的属性单个注⼊
setter⽅法需要不需要
复杂类型属性注⼊⽀持不⽀持
松散绑定⽀持不⽀持
JSR303数据校验⽀持不⽀持
SqEL表达式不⽀持⽀持
松散绑定、SqEL表达式和JSR303数据校验
松散绑定
松散绑定是当注⼊的属性名与bean中的不⼀致是仍然可以实现属性赋值;使⽤@ConfigurationProperties注解配置⽂件时⽀持松散语法绑定;
proson: {mName: 梅西} //标准写法
proson: {m-Name: 梅西} //可以使⽤-线
proson: {m_Name: 梅西} //可以使⽤_线
proson: {M_NAME: 梅西} //可以使⽤⼤⼩写格式
SqEL表达式
SqEL表达式即不使⽤配置⽂件的情况下直接使⽤@Value("#{5*2}"),直接对属性赋值
JSR303数据校验今日校园parsererror
对前端传过来的数据进⾏校验
yaml
messi:
esail: 123e
age: 33
javaBean
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "messi")
public class Messi{
@Email(message="邮箱格式错误")
private String email;
@Value("33")
private Integer age;
}
如果异常控制台将会显⽰打印异常
多环境配置
1. 多个yaml⽂件配置和yaml的优先级
当有多个.yaml或者.properties⽂件时可以使⽤@PropertySource(value = "")指定⽂件
JavaBean
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@PropertySource(value = "classpath:sheep.yaml")//指定那个⽂件
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
在SpringBoot项⽬中可以在多个位置定义.yaml配置⽂件;在不同位置指定的.yaml优先级都不⼀样
上图对应的分别为:
file:./config/:项⽬的config报下—优先级1
file:./:项⽬⽂件下—优先级2
classpath:/config/:类路径config报下—优先级3
classpath:/:类路径下—优先级4
2. yaml多个运⾏环境配置
当应⽤程序需要部署到不同的运⾏环境中时,⽐如:开发环境、测试环境、⽣产环境,可以使⽤不同的properties⽂件配置。
properties⽅式
在配置多个环境时为.yaml取名必须要求取名⽐如:application-{prifile}.yaml
application-dev.properties # 开发环境配置
application-test.properties # 测试环境配置
application-prod.properties # ⽣产环境配置
使⽤相应的环境时在全局配置⽂件中开启
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论