Spring-boot-3 -注解 yaml配置 -日志

4、核心技能

1. 常用注解

SpringBoot 摒弃 XML 配置方式,改为全注解驱动

1. 组件注册

  • @Configuration 自定义配置类、@SpringBootConfiguration 用来标注SpringBoot主启动类的
  • @Bean 可以在自定义配置类面创建对象交给ioc容器,组件在容器中的名字为方法名、@Scope 在application类上直接写注解,然后写上多例就可以了prototype
  • 假如第三方包任意对象想注入组件,跟上面那个一样或者写一个@import (类)直接导入组件名字默认全类名
  • @Controller、@Service、@Repository、@Component
  • @Import
  • @ComponentScan

2. 条件注解

  • @ConditionalOnXxx
  • 如果注解指定的条件成立则触发指定行为
  • ConditionOnClass如果类路径中存在这个类,则触发指定行为,
  • ConditionOnMissingClass如果类路径中不存在这个类,则触发指定行为,
  • ConditionOnBean如果容器存在这个Bean,则触发行为
  • 场景模拟:
  • 如果存在fastsqlexception ,给容器放一个cat组件 名叫cat01
  • 否则放一个dog组件,名叫dog01
  • 如果系统中有dog01这个组件就给容器放一个user组件,名叫张三
  • 否则就放一个user,名叫lisi

3. 属性绑定

  • @ConfigurationProperties
  • 将容器中任意组件属性值和配置文件中某一配置项进行绑定 例如使用component 或者在配置类里进行创建
  • 给注册组件
  • 使用@ConfigurationProperties(prefix前缀名= " " ) 可以放在类上或者方法上
  • @EnableConfigurationProperties
  • 复合注解 可以把类方法容器里,同时可以直接进行属性绑定,快速注册 导入第三方写好的组件 然后加上全类名 SpringBoot默认只扫描主类里的包

主程序

三个注解组成

SpringBootConfiguration、Enableautocoonfiguration、Conmponentscan

默认只能扫描主程序所在的包及其下面的子包,扫描不到spring-boot-autoconfigure包中官方写好的配置类

Enableautoconfiguration SpringBoot开启自动配置的核心

Yaml配置文件

特点:方便读写,层次分明,

基本语法

属性有层级关系,使用点来表示层级关系 使用下一行带来空格 ,k和v之间必须要有空格

1.大小写敏感,有层级关系要加空格 左侧对齐相同层级

2.支持的写法,哈希(hash)/映射(map)/字典(dictionary)

3.可以在pom文件中引入插件lombok的,尽在编译期间生效,这样在类里面写上@Data可以直接生成get/set方法,JavaBean属性的

@NoArgsConstructor // 自动生成无参构造器

@AllArgsConstructor 自动生成全参构造器

在properties里面加属性

4.在yaml里面 数组

这个是大文本的 > 的注意事项(若没有缩进,会压缩换行,若有缩进会保留原格式)

日志配置

日志框架

SpringBoot默认用的什么,

spring5以后直接写了 commons-logging 被 spring 直接写了

默认用的logback

SpringBoot怎么把日志配置好的:

日志格式

可以在配置文件里面做修改 日志格式

日志级别

调整日记级别甚至是每一个包下面的日志级别

logging.level.root =

拿到包名 logging.level.包名 =

日志分组

自定义的两个组,web和数据库的

文件输出

想要实现文件保存,有关键的logging

//指定文件名字

1. 只写名字,就生成到当前项目同位置的demo.log

2. 也可以写路径加名字

logging.file.name=

//指定文件地址

logging.file.path=

如果有name 和 path name的优先级高于path

文件归档与滚动切割

归档:每天的日志单独存一个文档中

切割:每个文件只要求?mb,超过大小切割成另外一个文档

自定义配置

相关推荐
太理摆烂哥3 分钟前
MySQL用户管理
数据库·mysql
LMT流氓兔35 分钟前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
wangbing11252 小时前
平台介绍-modbus设备调试
java
梦影_2 小时前
MySQL进阶教程(五)—— SQL调优(下)
android·大数据·数据库·后端·sql·mysql·database
考虑考虑2 小时前
mariadb数据库
数据库·后端·mariadb
西索斯coding2 小时前
gpt-image-2.5-sunburst 和 gemini-3.1-flash-image 差多少?60 组项目素材的成功成本评测框架
java·linux·gpt·ai
wuminyu3 小时前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++
Flynn Liang3 小时前
大模型怎么自己调函数?Spring AI 2.0 Tool Calling 自动循环原理 + 完整时序图
java·人工智能·spring·agent·函数调用·springai·toolcalling
John_Hui4 小时前
Windows 10 安装版本:mysql-8.1.0-winx64.zip
数据库·windows·mysql
莫晓燚4 小时前
双机部署若依 (RuoYi‑Vue) 传统环境部署---实战
linux·运维·数据库·redis·mysql·nginx·ruoyi