Notify 类的实现思路
背景
项目中往往需要发送短信、邮件、微信消息等,这类功能往往都是读取 properties 中的配置信息,然后通过各种 sdk 进行发送。之前我都是为每种功能编写一个静态 Util 然后直接调用。
这样的方式简单,直接。缺点也很明显,不符合各种范式,不能开闭,没有解耦,类的职责太多等等。
最近看到一个开源项目有一个比较好的解决方案,这里记录下,方便以后使用。以下代码基于 Spring Boot 2.2.2.RELEASE 版本。
代码
Nofiy 模块具体由一下几个类构成:
- NotifyProperties 类,这个类的功能就是将配置文件的类容转换成 Java 类,使用 Spring 的
@ConfigurationProperties
可以非常方便的进行转换。
2.NotifyAutoConfiguration 类,这是一个@Configuration
类,该类使用了NotifyProperties
的类容并将配置文件的数据注入到需要的 service 中。
3.NotifyService 类,发送各种消息的 service
4.XXSender 类,具体的各种模块的发送类,比如 SmsSender、MailSender 类,承担了具体的 SDK 调用。
实现代码:
https://files.cnblogs.com/files/manastudent/notify.zip