SpringBoot笔记整理(一)

SpringBoot笔记整理(一)
SpringBoot笔记整理(二)
SpringBoot笔记整理(三)
SpringBoot笔记整理(四)

1、使用Spring Initializer快速创建Springboot项目

默认生成的Spring Boot项目;

  • 主程序已经生成了,我们只需要我们自己的逻辑
  • resources文件夹中目录结构
    static:保存所有的静态资源;js css images;
    templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);
    application.properties:Spring Boot应用的配置文件;

2、配置文件

SpringBoot使用一个全局的配置文件,配置文件名是固定的;

  • application.properties
  • application.yml

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

YAML(YAML Ain’t Markup Language)
YAML A Markup Language:是一个标记语言
YAML isn’t Markup Language:不是一个标记语言
标记语言:
以前的配置文件;大多数都使用的是xxxx.xml文件;
YAML:以数据为中心,比json、xml等更适合做配置文件
YAML:配置例子

server:port:8080

XML:

<server><port>8080</port>
</server>  

3、YAML语法

  • 基本语法

K:(空格)V:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据都是同一个层级的

server:port:8080path:/hello

属性和值也是大小写敏感

  • 值的写法

字面量:普通的值(数字、字符串、布尔)
k:v:字面直接来写
字符串默认不用加上单引号或者双引号;
"":双引号:不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name:“zhangsan \n lisi”:输出=》zhangsan 换行 lisi
'':单引号:会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name:‘zhangsan \n lisi’:输出=》zhangsan \n lisi
对象、Map(属性和值)(键值对):
k:v:在下一行来写对象的属性和值的关系,注意缩进
对象还是k:v的方式

friends:lastName:zhangsanage:20

行内写法:

friends:{lastName:zhangsan, age:18}

数组(List、Set):

用-值表示数组中的一个元素

pets:- cat- dog- pig

行内写法

pets:[cat,dog,pig]

4、配置文件值注入

配置文件

person:lastName: zhangsanage: 18boss: falsebirth: 2019/11/25maps: {k1: v1,k2: v2}lists:- list- zhaoliudog:name: 小狗age: 12

javaBean:

@Component
@ConfigurationProperties(prefix = "person")
public class Person {private String lastName;private Integer age;private Boolean boss;private Date birth;private Map<String,Object> maps;private List<Object> lists;private Dog dog;

我们可以导入配置文件处理器,以后编写配置就有提示了

<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>

4.1 @ConfigurationProperties获取值和@Value比较

什么是SpEL?
Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言。 语法类似于 EL表达式:SpEL 使用 #{…}作为定界符,所有在大框号中的字符都将被认为是 SpEL。SpEL 为 bean 的属性进行动态赋值提供了便利 通过 SpEL 可以实现:
通过 bean 的 id 对 bean 进行引用 调用方法以及引用对象中的属性计算表达式的值正则表达式的匹配

什么是JSR303?
JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator。
此实现与 Hibernate ORM 没有任何关系。 JSR 303 用于对 Java Bean 中的字段的值进行验证。
Spring MVC 3.x 之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证。
注:可以使用注解的方式进行验证

@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(松散语法)支持不支持
SpEL不支持 支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

无论是配置文件yml还是properties他们都能获取到值
如果说,我们只是在某个业务逻辑中需要获取一下配置文件的某项值,使用@Value
如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties

4.2 配置文件注入值数据校验

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
//    @Value("${person.last-name}")@Emailprivate String lastName;
//    @Value("#{11*2}")private Integer age;
//    @Value("true")private Boolean boss;private Date birth;private Map<String,Object> maps;private List<Object> lists;private Dog dog;

4.3 @PropertySource&@ImportResource
@PropertySource:加载指定的配置文件

@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person")
//@Validated
public class Person {/*** <bean class = "Person">*     <property name = "lastName" value = "字面量/${key}从环境变量、配置文件中获取值/#{SpEL}"></property>*     </bean>*///    @Value("${person.last-name}")
//    @Emailprivate String lastName;
//    @Value("#{11*2}")private Integer age;
//    @Value("true")private Boolean boss;

@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效
spring boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别
想让spring的配置文件生效,加载进来,@ImportResource标注在一个配置类上

@ImportResource(locations = {"classpath:beans.xml"})
导入Spring的配置文件让其生效

不来编写Spring的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="helloService" class="com.homyit.springboot.service.HelloService"></bean></beans>

SpringBoot推荐给容器中添加组件的方式:推荐使用全注解的方式
1、配置类========Spring配置文件
2、使用@Bean给容器添加组件

@Configuration
public class MyAppConfig {//将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名@Beanpublic HelloService helloService(){System.out.println("配置类@Bean给容器中添加组件了。。。。");return new HelloService();}
}

4.4 配置文件占位符
1、随机数

${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536])}

2、占位符获取之前配置的值,如果没有可以使用:指定默认值

person.last-name=张三${random.uuid}
#person.age=18
person.age=${random.int}
person.birth=2019/11/25
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
#person.dog.name=dog
person.dog.name=${person.hello:hello}_dog
person.dog.age=15

4.5 Profile
1、多Profile文件
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
默认使用application.properties的配置

2、yml支持多文档块方式

server:port: 8080
spring:profiles:active: dev
---server:port: 8083
spring:profiles: dev---server:port: 8084
spring:profiles: prod

3、激活指定profile
3.1 在配置文件中指定

 spring.profiles.active = dev

3.2 命令行

--spring.profile.active = dev

可以直接在测试的时候,配置传入命令行参数
3.3 虚拟机参数

-Dspring.profile.active = dev

4.6、配置文件加载位置

  • spring boot 启动会扫描以下位置的application.properties或者application.ym文件作为Spring Boot 的默认配置文件
    -file: ./config/
    -file: ./
    -classpath: /
    以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容。互补配置

我们也可以通过配置spring.config.location来改变默认的配置文件位置。

项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文章推荐 | 城市规划中城市信息学的研究进展

来源&#xff1a;北京城市实验室BCL随着计算机技术的飞速发展&#xff0c;城市信息学作为城市规划领域的一门新兴学科&#xff0c;逐渐引起学术界的关注。城市信息学的兴起给城市规划带来了新的压力&#xff0c;但它也提供了新的城市分析视角。在此背景下&#xff0c;专家小组概…

Matlab基础

一.入门基础 1.基本知识 1.1 输入命令 以分号结尾不会打印变量的值 x 1 y x;1.2 变量命名规则&#xff1a;以字母开头&#xff0c;并且仅包含字母、数字和下划线。 1.3 使用save命令将工作区中的变量保存到MAT文件的MATLAB特定格式文件中,文件名为datafile.mat。可以指定保…

3年规模翻7倍统治 5G、IoT时代,化合物半导体材料深度报告

来源 华西证券编辑&#xff1a;智东西内参作者&#xff1a;吴吉森 等随着 5G、IoT 物联网时代的来临&#xff0c;以砷化镓&#xff08;GaAs&#xff09;、氮化镓&#xff08;GaN&#xff09;、碳化硅&#xff08;SiC&#xff09;为代表的化合物半导体市场有望快速崛起。其中&am…

SpringBoot笔记整理(二)

SpringBoot笔记整理&#xff08;一&#xff09; SpringBoot笔记整理&#xff08;二&#xff09; SpringBoot笔记整理&#xff08;三&#xff09; SpringBoot笔记整理&#xff08;四&#xff09; Spring Boot与日志&#xff08;日志框架、日志配置&#xff09; 1、市面上的日志…

MATLAB图像处理基础

1.导入数据 1.1 使用readtable("")导入数据&#xff0c;并存储在表格中&#xff0c;使用axis equal可以校正坐标轴纵横比。 letter readtable("M.txt"); plot(letter.X,letter.Y) axis equal1.2 range(x)函数返回x的值的范围&#xff0c;即max(x) - min(…

BBWebImage 设计思路

BBWebImage 设计思路 BBWebImage 是高性能 Swift 图片组件&#xff0c;用于图片下载、缓存、编解码、编辑与展示。 GitHub 地址&#xff1a; https://github.com/Silence-GitHub/BBWebImage 效果图 下载、展示并缓存原图 下载、渐进式解码、编辑图片&#xff0c;缓存编辑后的图…

清华本科、港科大准博士被指论文抄袭,网友:这是有技巧的“洗稿”

来源&#xff1a;整理自新智元、Reddit、知乎等不是吧&#xff1f;清华自动化本科&#xff0c;香港科技大学硕士生发表的顶会论文竟然是抄的&#xff1f;而且抄袭对象还是另一篇顶会论文&#xff1f;近日&#xff0c;眼尖的网友发现两篇分别发表在 ICML 2021 和 ICCV 2021 两大…

MATLAB深度学习入门

1. 加载图像 1.1 使用imread函数加载图像&#xff0c;可以加载GIF、JPEG、PNG等大多数标准文件格式图像。 Import an image img imread("file.jpg")1.2 采用**imshow()**来显示图像。 imshow(img)1.3 采用alexnet函数可以创建预定义的深度网络AlexNet的副本。 de…

SpringBoot笔记整理(三)

SpringBoot笔记整理&#xff08;一&#xff09; SpringBoot笔记整理&#xff08;二&#xff09; SpringBoot笔记整理&#xff08;三&#xff09; SpringBoot笔记整理&#xff08;四&#xff09; Web开发 1、使用SpringBoot&#xff1a; 1&#xff09;创建SpringBoot应用&…

Scrapy shell调试返回403错误

一、问题描述 有时候用scrapy shell来调试很方便,但是有些网站有防爬虫机制,所以使用scrapy shell会返回403,比如下面 C:\Users\fendo>scrapy shell https://book.douban.com/subject/26805083/2017-04-17 15:18:53 [scrapy.utils.log] INFO: Scrapy 1.3.3 started (bot: sc…

图神经网络,如何变深?

来源&#xff1a;智源社区版式制作&#xff1a;Camel撰文&#xff1a;侯振宇编辑&#xff1a;贾 伟现实世界中很多很多任务可以描述为图(Graph)问题&#xff0c;比如社交网络&#xff0c;蛋白质结构&#xff0c;交通路网数据&#xff0c;图是一个很值得研究的领域。近年来&am…

机器学习分类与性能度量

机器学习分类与性能度量 数据集:训练集(Training Set)、验证集(Validation Set)和测试集(Test Set) 1、 当模型无需人为设定超参数&#xff0c;所用参数都通过学习得到&#xff0c;则不需要验证集。验证集适合多个不同超参数训练多个模型&#xff0c;通过验证集&#xff0c;…

SpringBoot笔记整理(四)

SpringBoot笔记整理&#xff08;一&#xff09; SpringBoot笔记整理&#xff08;二&#xff09; SpringBoot笔记整理&#xff08;三&#xff09; SpringBoot笔记整理&#xff08;四&#xff09; 1、SpringMVC自动配置 以下是SpringBoot对SpringMVC nclusion of ContentNegoti…

中国人民大学孟小峰教授:“科学数据智能——人工智能在科学发现中的机遇与挑战”...

来源&#xff1a;国家自然科学基金委员会微信公号 孟小峰 博士&#xff0c;中国人民大学教授&#xff0c;博士生导师&#xff0c;CCF会士。主要研究方向为数据库理论与系统、大数据管理系统、大数据隐私保护、大数据融合与智能、大数据实时分析、社会计算等。摘 要随着全球各科…

Java 面向对象语言基础

面向过程 就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候一个一个依次调用就可以了。 面向对象 是把构成问题事务分解成各个对象&#xff0c;建立对象的目的不是为了完成一个步骤&#xff0c;而是为了描叙某个事物在整个解…

MFC多视图与重绘效率

MFC多视图与重绘效率 多窗口同步更新 CDocument::UpdateAllViews(CView* pSender,LPARAM lHint,CObject* pHint):通知所有与CDocument同源的CView窗口&#xff0c;即发送WM_PAINT。View::OnUpdate(CView* pSender,LPARAM lHint,CObject* pHint)局部重绘或全部重绘&#xff…

全球首例!这台机器人发明了两项新技术,已获专利授权!

文章来源&#xff1a;EETOP几天前前人工智能系统专利申请权有最新发展。南非率先成为第一个授予人工智能专利权的国家&#xff0c;承认人工智能机器人DABUS为「发明者」&#xff0c;6日澳大利亚联邦法院也做出裁决&#xff1a;发明者可以是非人类。 这算是有历史里程碑意义的判…

成员变量、局部变量、实例变量、静态变量、类变量、常量

成员变量&#xff1a; 直接在类中声明的变量叫成员变量(又称全局变量) ▲ 初始化&#xff1a; 如果未对成员变量设置初始值&#xff0c;则系统会根据成员变量的类型自动分配初始值&#xff1a;int分配初始值0、boolean分配初始值false&#xff0c;而自定义类型则分配初始值null…

PHP+MySQL 跨服务器跨数据库数据拷贝系统

说明&#xff1a; 1.使用之前&#xff0c;做好数据备份。&#xff08;无论是来源数据库&#xff0c;还是目标数据库&#xff09; 2.仅支持MySQL数据库。&#xff08;可自行修改代码已连接其它数据库&#xff09; 3.连接数据库的账号必须有远程访问MySQL数据库数据库的权限。&am…

行业洞见 | 一文了解自动驾驶汽车

文章来源&#xff1a;ancholabs.medium.com文字翻译&#xff1a; 新能源情报局封面配图&#xff1a;原作者驾驶是人类日常从事的活动中最困难的之一。遵循交通规则&#xff0c;通过眼神与其他司机沟通交流、对天气状况做出反应是成为优秀司机的先决条件。在自动驾驶汽车中&…