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)是简单类型,其他的是复杂类型

相关推荐
_UMR_3 小时前
springboot集成Jasypt实现配置文件启动时自动解密-ENC
java·spring boot·后端
程序员小假3 小时前
我们来说说 Cookie、Session、Token、JWT
java·后端
短剑重铸之日4 小时前
《SpringBoot4.0初识》第一篇:前瞻与思想
java·开发语言·后端·spring·springboot4.0
it_czz4 小时前
LangSmith vs LangFlow vs LangGraph Studio 可视化配置方案对比
后端
李派森4 小时前
软考高项(信息系统项目管理师)—第4章 信息系统管理全解析
笔记·计算机网络
蓝色王者4 小时前
springboot 2.6.13 整合flowable6.8.1
java·spring boot·后端
花哥码天下5 小时前
apifox登录后设置token到环境变量
java·后端
浩瀚地学5 小时前
【Java】常用API(二)
java·开发语言·经验分享·笔记·学习
hashiqimiya6 小时前
springboot事务触发滚动与不滚蛋
java·spring boot·后端