spring boot 笔记大杂烩

一,springboot项目创建

springboot创建时idea会打开start.spring.io失败报错

可以手动打开这个页面,然后选择maven项目,然后修改group和name名然后添加依赖web,然后生成项目包,解压缩后用idea打开就能用了

运行后报错

Error:java: 无效的源发行版: 17

原因:报错是因为项目里jdk版本选择的问题,需要在sitting和struct里面分别修改成8

二,目录结构

resource:

static:静态资源(js,css,图片,音频,视频)

templates:模板文件(模板引擎freemarker,thymeleaf;默认不支持jsp)

application.properties:配置文件

spring boot 内置了tomcat,并且不需要在打成war包在执行了

可以在application.properties里进行参数配置例如:端口号配置

三,配置文件及yml

@PropertySource()引入其他配置文件

程序默认会识别application.properties和application.yml里的配置信息

当是其他文件名字的时候可以这样写

java 复制代码
conf.properties是配置文件的文件名

@PropertySource(value={"classpath:conf.properties"})

public class Student{

...

}

但是@PropertySource(value={"xxx"})只能识别properties的文件,不能识别yml的文件

默认全局配置文件:

application.properties:

1, k=v

2,或者行内写法(集合数组用中括号,可以省略,对象属性map用大括号,不可以省略

application.yml:

不是标记文档,

注意 1, k:空格v

2,通过垂直对齐指定层次关系

例如server:

port: 8888

path: /a/v/b

3,默认可以不写引号,双引号会将其中的转义符进行转义,单引号和不写不会转义

xml:

是一个标记文档

<server>

<port>8888</port>

</server>

配置文件的优先级

多个地方配置时,如果冲突,优先级如下:

命令行参数(调用外部配置文件>运行参数)>内部文件(properties>yml)

A,项目内部的配置文件

默认会读application.properties和application.yml,相互补充,如果内容冲突,则properties中的优先级更高

这两个文件可以存在于一下4个位置,内容冲突时优先级从高到低为:

file:项目根目录/config (项目根目录和src平级)

file:项目根目录

classpath:项目根目录/config (包下)

classpath:项目根目录

B。项目外部的配置文件

外部配置文件优先级高于内部,同一个配置同时存在,外部大于内部

1,多配置修改时可以引用外部配置文件,指定外部的配置文件

2,个别配置修改时可以用命令行指定配置参数,例如:java -jar xxx.jar --server.port=8888

四,通过yaml给对象注入值:

通过@ConfigurationProperties("dd")给对象注入值

@ConfigurationProperties("dd")是通过yml/properties配置文件取值

注入值

yml:

复制代码
student:
  name: zhangsan
  age: 11
  sex: true
  birthday: 2024/02/25

绑定:

复制代码
@Component //将此javabean放入spring容器
@ConfigurationProperties(prefix = "student")
上面这两个是引入配置文件里配置信息的作用
public class Student {

。。。}

通过@value("dd")给对象注入值

复制代码
@Component //将此javabean放入spring容器
//@ConfigurationProperties(prefix = "student")  //注解和value同时用时,注解的优先级高,可以互补用
public class Student {
    @Value("ddd")
    private String name;
    @Value("44")//int也要加双引号
    private int age ;
    private boolean sex;
    private Date birthday;

@ConfigurationProperties("dd")和@value("dd")的区别:

|----------------------|--------------------------------|--------------|
| | @ConfigurationProperties("dd") | @value("dd") |
| 注入值 | 批量注入 | 单个 |
| 松散语法 注1 | 支持 | 不支持 |
| spEL 注2 | 不支持 | 支持 |
| JSR303数据校验(例如邮箱格式校验) | 支持 | 不支持 |
| 注入复杂类型 注3 | 支持 | 不支持 |
| | | |

注1:松散语法举个例子pet的属性是nickName在配置文件里写成nick-name是可以注入到对象的

nickName是驼峰命名,nick-name是松散命名

注2:spEL :Spring表达式语言(Spring Expression Language,SpEL)支持下面的写法

复制代码
public class Student {
    @Value("${student.name}")
    private String name;

注3: (8个基本类型/string/Date)是简单类型,其他的是复杂类型

相关推荐
许苑向上2 分钟前
Dubbo集成SpringBoot实现远程服务调用
spring boot·后端·dubbo
郑祎亦1 小时前
Spring Boot 项目 myblog 整理
spring boot·后端·java-ee·maven·mybatis
本当迷ya1 小时前
💖2025年不会Stream流被同事排挤了┭┮﹏┭┮(强烈建议实操)
后端·程序员
美式小田1 小时前
单片机学习笔记 9. 8×8LED点阵屏
笔记·单片机·嵌入式硬件·学习
猫爪笔记2 小时前
前端:HTML (学习笔记)【2】
前端·笔记·学习·html
_不会dp不改名_2 小时前
HCIA笔记3--TCP-UDP-交换机工作原理
笔记·tcp/ip·udp
计算机毕设指导62 小时前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
paopaokaka_luck2 小时前
[371]基于springboot的高校实习管理系统
java·spring boot·后端
-一杯为品-2 小时前
【51单片机】程序实验5&6.独立按键-矩阵按键
c语言·笔记·学习·51单片机·硬件工程
捂月3 小时前
Spring Boot 深度解析:快速构建高效、现代化的 Web 应用程序
前端·spring boot·后端