SpringBoot开发案例之Starter运行原理


前言

使用过 SpringBoot 的小伙伴都应该知道,SpringBoot 通过引入一些 Starter 大大简化了项目配置。下面以邮件发送为例,来分析一下 Starter 是如何简化配置,并简要说明一下初始化加载方式。

SpringMvc发送邮件

首先,我们来看一下,在没使用 SpringBoot 之前,我们是如何发送邮件的。

mail.properties配置:

mail.host=smtp.52itstyle.vip
mail.username=admin@52itstyle.vip
mail.password=123456
mail.from=345849402@qq.com

spring.xml添加配置信息:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 发送邮件 -->
    <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">  
     <property name="host">  
      <value>${mail.host}</value>  
     </property>  
     <property name="javaMailProperties">  
            <props>  
              <prop key="mail.smtp.auth">true</prop>  
              <prop key="mail.smtp.timeout">25000</prop>  
            </props>  
      </property>     
     <property name="username">  
      <value>${mail.username}</value>  
     </property>  
     <property name="password">  
      <value>${mail.password}</value>  
     </property> 
     <property name="defaultEncoding">  
      <value>UTF-8</value>  
     </property> 
    </bean>  
</beans>

SpringBoot发送邮件

下面我们来看下 SpringBoot 是如何配置邮件发送的。

application.properties 配置:

spring.mail.host=smtp.52itstyle.vip
spring.mail.username=admin@52itstyle.vip
#spring.mail.password=123456
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

pom.xml 引入:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

原理介绍

两个重要的组件:

  • spring-boot-autoconfigure,通过灵活的Auto-configuration注解使SpringBoot中的功能实现模块化和可被替换扩展。
  • spring-boot-starter-mail,对,这就是那个扩展!

我们在 spring-boot-autoconfigure 中会发现一个 mail 包,里面有以下配置:

MailProperties 初始化参数

JndiSessionConfiguration 初始化Bean

MailSenderAutoConfiguration  初始化 JavaMailSenderImpl

MailSenderValidatorAutoConfiguration 测试邮件连接

然后,就没有然后了,自己去看吧。

爪哇笔记

作者: 小柒

出处: https://blog.52itstyle.vip

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(345849402@qq.com)咨询。