1. pom文件 标签
依赖配置文件我们经常接触到,但对<optional>
标签理解可能一知半解(以我的角度,在这之前没有关注过),或者是你没看下面内容,都不知道optional应该放在什么地方。
<optional>
标签在pom文件中长这样:
<dependency><groupId>org.tao</groupId><artifactId>sms-utool</artifactId><version>1.0-SNAPSHOT</version><optional>true</optional> <!-- 在这里 -->
</dependency>
什么作用? optional的作用是:当其他模块依赖当前模块时,不会依赖
2. 程序为什么这么写?
空口无凭,Hutool 工具包实现了很多好用的工具,他的扩展工具包依赖很多了第三方工具包,例如:
怎么验证?拿emoji举例,没添加emoji-java依赖,emojiUtil会爆红,由于Java是动态加载,所以未使用时不会报错。
Hutool开发者考虑到扩展中的内容我们一般不会用到,假如Hutool依赖文件设置为默认:
如果
ConditioalOnClass
用于根据类路径中是否包含指定的类来决定是否加载一个 Bean 或配置类。
@Configuration
public class SmsConfig {@ConditionalOnClass(TxSmsService.class)static class TxConfig{@BeanTxSmsService txSmsService() {System.out.println("tx smsService init");return () -> System.out.println("tx发送短信");}}
}
如果能找到TxSmsService类,那么就注入TxSmsService。
----- 未完待续,按计划2024-05-19之前写完