论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
分布式数据库
›
SpringBoot3依靠管理,自动配置
SpringBoot3依靠管理,自动配置
tsx81428
金牌会员
|
2024-6-27 21:59:29
|
来自手机
|
显示全部楼层
|
阅读模式
楼主
主题
951
|
帖子
951
|
积分
2855
1. 项目新建
直接建Maven项目
通过官方提供的Spring Initializr项目创建
2. 相干pom依靠
<!-- 所有springboot项目都必须继承自 spring-boot-starter-parent -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.5</version>
</parent>
<dependencies>
<!-- web开发的场景启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- SpringBoot应用打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
复制代码
3. 依靠管理机制
导入 starter 全部相干依靠都会导入进来
需要开发什么场景就导入什么场景启动器
Maven依靠通报原则。A-B-C,A依靠B,B依靠C,则A也依靠了C
导入场景启动器,场景启动器会自动把这个场景的全部核心依靠全部导入进来
为什么版本号都不用写?
每个boot项目都有一个父项目 spring-boot-starter-parent
parent的父项目是 spring-boot-dependencies
父项目具有 版本仲裁中心,会把全部常见的jar的依靠版本都声明好了,比方:mysql-connector-j
如何自界说版本号
使用maven的就近原则
直接在当前项目properties标签中声明父项目的版本属性的key
直接在导入依靠的时候声明版本
第三方的jar包
boot父项目没有管理的需要自行声明好,比方:
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.16</version>
</dependency>
复制代码
4. 自动配置机制
自动配置的 Tomcat、SpringMVC 等
导入场景,容器中就会自动配置好这个场景的核心组件。
从前:DispatcherServlet、ViewResolver、CharacterEncodingFilter…
现在:自动配置好的这些组件
验证:容器中有了什么组件,就具有什么功能
public class Boot302DemoApplication {
public static void main(String[] args) {
// Java10:局部变量类型的自动推断
var ioc = SpringApplication.run(Boot302DemoApplication.class, args);
// 1、获取容器中所有组件的名字
String[] names = ioc.getBeanDefinitionNames();
// 2、遍历查看
// SpringBoot把以前配置的核心组件现在都自动配好了
for (String name:
names) {
System.out.println(name);
}
}
}
复制代码
默认扫描规则
@SpringBootApplication 标注的累就是主程序类
SpringBoot只会扫描主程序所在的包及其下面的子包
,自动的componet-scan功能
自界说扫描路径
@SpringBootApplication(scanBasePackages = “com.xxx”) 指定即可
@ComponentScan(“com.xxx”) 直接指定扫描的路径
配置默认值
配置文件的全部配置项是和某个类的对象值进行一一绑定
绑定了配置文件中每一项值的类:配置属性类
比如:
ServerProperties类绑定了全部Tomcat服务器有关的配置
MultipartProperties类绑定了全部文件上床相干的配置
…参照官方文档 或者参照绑定的属性类
按需加载自动配置
导入场景
spring-boot-starter-web
场景启动器除了会导入相干功能依靠,导入一个spring-boot-starter,是全部starter的starter,底子核心starter
spring-boot-starter导入了一个包 spring-boot-autoconfigure。包里面都是各种场景的AutoConfiguration自动配置类
虽然全场景的自动配置都在 spring-boot-autoconfigure这个包,但是不是全都开启的。
导入哪个场景就开启哪个自动配置
总结
:
导入场景启动器、触发 spring-boot-autoconfigure这个包的自动配置生效、容器中就会具有相干场景的功能
5. 核心注解
@ConditionalOnXxx
@ConditionalOnClass:如果类路径中存在这个类,则触发指定行为
@ConditionalOnMissingClass:如果类路径中不存在这个类,则触发指定行为
@ConditionalOnBean:如果容器中存在这个Bean(组件),则触发指定行为
@ConditionalOnMissingBean:如果容器中不存在这个Bean(组件),则触发指定行为
场景:
● 如果存在FastsqlException这个类,给容器中放一个Cat组件,名cat01,
● 否则,就给容器中放一个Dog组件,名dog01
● 如果系统中有dog01这个组件,就给容器中放一个 User组件,名zhangsan
● 否则,就放一个User,名叫lisi
复制代码
@ConditionalOnBean(value=组件范例,name=组件名字):判断容器中是否有这个范例的组件,并且名字是指定的值
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
tsx81428
金牌会员
这个人很懒什么都没写!
楼主热帖
【pandas小技巧】--读取多个文件 ...
【参考】开发工程师职级与职级界定-职 ...
【毕业季】纸短情长,浅谈大二以前的学 ...
mysql修改表字段长度
读SQL进阶教程笔记06_外连接
MySQL与Redis数据双写一致性工程落地案 ...
kubernetes之镜像拉取策略ImagePullSec ...
BinaryBombs(二进制炸弹实验) ...
Apple应用证书申请流程
Apache Shiro反序列化漏洞(Shiro550) ...
标签云
运维
CIO
存储
服务器
浏览过的版块
SAP
linux
运维.售后
快速回复
返回顶部
返回列表