前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >yml找不到与mail注入问题分析

yml找不到与mail注入问题分析

作者头像
时光潜流
发布2022-12-26 19:43:07
4200
发布2022-12-26 19:43:07
举报
文章被收录于专栏:博客专栏

    今天没有按计划完成任务,原因是~有个新的游戏公测了,没忍住QAQ

    另外一个重要问题是,两个bug的产生,如下阐述。

yml文件没有小绿叶

    我的后端springboot是采用的yml以及application杂糅的方式进行配置的,之前每天正常的跑着,可是今天打开idea时候,yml一直没有自动提示,yml文件没有染上spring的颜色,网上大部分都是一样的解决策略,那就是安装spring assistant插件,然后重启即可,然而事实上不奏效。经过我的慢慢琢磨,解决措施如下:

手动的将yml加入到环境,而不是自动扫描[可能是项目变大,扫描变得困难,没扫到]。

mail注入

    说到springboot,那么他提供了一个JavaMailSender . 只要导入对应的spring-boot-starter-mail并且进行基本项的配置即可。需要时,自动注入JavaMailSender,利用SimpleMailMessage封装一下消息即可发送。但是事实上并没有这么顺利,一开始我的配置全部放在了yml中,结果发现JavaMailSender始终找不到!用了各种方法都不行。最后解决措施是把spring.mail.host放在application.properties即可。。。大致分析一下原因(不一定正确,但大概率是):

    首先大致查看了MailSenderAutoConfiguration的源码,类前有下面这句话:

代码语言:javascript
复制
@Import({ MailSenderJndiConfiguration.class, MailSenderPropertiesConfiguration.class })

    这个导入中,后面一个MailSenderPropertiesConfiguration就是会产生JavaMailSender对象的类,它的类上有标注:

代码语言:javascript
复制
@ConditionalOnProperty(prefix = "spring.mail", name = "host")

    而对于其内部有JavaMailSender对象产生方式:

代码语言:javascript
复制
	@Bean
	@ConditionalOnMissingBean(JavaMailSender.class)
	JavaMailSenderImpl mailSender(MailProperties properties) {
		JavaMailSenderImpl sender = new JavaMailSenderImpl();
		applyProperties(properties, sender);
		return sender;
	}

    由此可见,如果成功进入了MailSenderPropertiesConfiguration类,那么一定会产生JavaMailSender或者是容器原本就存在的实例。所以原因就是没有进入。然而我仔细排查我的yml文件,发现该配置是绝对存在的,所以真相只有一个,那就是ConditionalOnProperty的判定并没有访问到yml的配置,只访问了application的配置。

    浅显的原因就是这个结论了ConditionalOnProperty不读取yml配置。深层原因肯定还是要去看spring对这个注解的处理方式了。因为较为繁琐,暂且只做简单的分析,日后有空的时候再进行深入分析。

后续

    主要就是解决了上面的问题,然后就是简单的回复发送邮件提醒被回复人了(不会有人会经常逛你站看有没有人来回复评论的,所以,需要邮件提醒)。然后由于发送邮件需要的时间比较长,所以暂且也是新建了一个线程单独处理,服务本身只检测插入数据库的结果,当然,没有必要上消息队列的,因为处理量没那么大。然后前端还实现了昨天计划的评论后刷新策略,简单的实现了子传父事件方式,成功时,就重新获取一下数据(因为数据量不是很大,这样更方便)。

    明天要做核酸检测啦。明天总能把友链页剩余的两个需求解决了吧!管理友链和评论分页。

    开心!o(* ̄▽ ̄*)ブ

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • yml文件没有小绿叶
  • mail注入
  • 后续
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档