springboot笔记
springboot
提供快速使用spring的方式,基于约定大于配置,快速构建项目。
springboot构建项目
- 创建maven工程
- 继承父工程 spring-boot-starter-parent
- 添加web开发起步依赖 spring-boot-starter-web
- 编写起步类HelloApplication 添加 @SpringBootApplication 注解
- 编写main方法 SpringApplication.run( args);
spirngboot提供了2种类型的配置文件
gradle 技术默认配置文件名称 : application
在同一级目录下优先级: properties > yml > yaml
程序启动时, 加载文件:
1. file:./config: 当前项目下的/config目录
2. file:./: 当前项目下的目录
3. classpath:/config/: classpath目录下的/config目录
4. classpath: classpath的根目录
yaml语法
-
大小写敏感。
-
数据值前面必须有空格作为分隔符。
-
使用缩进标识层级关系
-
缩进不允许使用tab键, 。只能使用空格(各个系统tab对应的空格数不同,导致层次混乱)。
-
缩进空格数不重要, 只要相同层级元素左侧对齐即可。
-
#表示注释,从这个字符到行尾,都会被解释器忽略。
-
对象(map):
person:
name: zhangsan
-
数组:
address:
- beijing
- shanghai
- beijing
-
存量: 单个的
msg1: 'hello \n world' #单引号忽略转义字符
msg2: "hello \n world" #双引号识别转义字符 -
参数引用
$
读取配置文件
-
@value("@{key}")
-
Environment @Autowired 注入, env.getProperty("key")
-
@configurationproperties
profile
新建多个配置文件
application-dev.yml
application-pro.yml
使用参数 spring.profiles.active =dev 使哪个配置文件生效。
springboot自动配置
自定义条件
-
定义条件类: 自定义类实现Condition接口, 重写matches方法, 在matches方法中进行逻辑判断,返回boolean值,match方法两个参数:
context: 上下文对象,可以获取属性值,类加载器,获取BeanFactory等。
metadata:元数据对象, 用于获取注解属性。
-
判断条件
在初始化Bean时候,使用@Conditional(条件类.class)注解
-
springboot提供的常用条件注解:
ConditionalOnProperty:判断配置文件中是否有对应的属性和值才初始化Bean。
ConditionalOnClass:判断环境中是否有对应的字节码文件才初始化Bean。
ConditionalOnMissingBean:判断环境中没有对应的Bean才初始化Bean。
springboot @Import注解
@Enable* 底层依赖于@Import注解导入一些类, 使用@Import导入的类会被Spring加载到IOC容器中。 而@Import提供了4种用法:
1. 导入Bean。 @Import(User.class)
1. 导入配置类。 -- 配置类使用@Configuration注解 添加@Bean 实现bean
1. 导入ImportSecector实现类。 一般用于加载配置文件中的类。
1. 导入ImportBeanDefinitionRegistrar实现类。
springboot 监听器(基于java监听 EventObject)
-
ApplicationRunner接口
当项目启动后执行run方法。可以做缓存预热等动作。
-
CommandLineRunner接口
功能类似ApplicationRunner接口,当项目启动后执行run方法。
-
继承ApplicationContextInitializer接口
新建文件META-INF/spring.factories
org.springframework.context.ApplicationContextInitializer=自己写的类
-
继承SpringApplicationRunListener接口(可以添加spring启动周期各个周期的方法)
新建文件META-INF/spring.factories
org.springframework.boot.SpringApplicationRunListener=自己写的类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南