diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1b08aaa
--- /dev/null
+++ b/README.md
@@ -0,0 +1,27 @@
+## 参考文章
+
+
+1、SpringBoot2.0 整合 shard-jdbc 中间件,实现数据分库分表
+
+
+2、SpringBoot2.0 整合 JavaMail ,实现异步发送邮件功能
+
+
+3、SpringBoot2.0 整合 RocketMQ ,实现请求异步处理
+
+
+4、SpringBoot2.0 整合 Swagger2 ,构建接口管理界面
+
+
+5、SpringBoot2.0 整合 QuartJob ,实现定时器实时管理
+
+## 项目简介
+SpringBoot 集成常用中间件
+
+SpringBoot集成常用开发中间件,分库分表,缓存,消息队列,定时器,权限管理等组件
+
+# 我的公众号
+关注公众号:知了一笑
+
+
+
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..e66d22a
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,218 @@
+
+
+
+
+ org.springframework.boot
+ spring-boot-starters
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+ com.boot.parent
+ middle-ware-parent
+ 1.0-SNAPSHOT
+ pom
+
+
+
+
+ ware-quart-job
+
+ ware-rocket-queue
+
+ ware-shard-jdbc
+
+
+
+ ware-email-send
+
+ ware-swagger-two
+
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+ 2.1.3.RELEASE
+ 5.1.5.RELEASE
+ 3.0.7.1
+ 5.1.38
+ 4.0
+ 1.1.13
+ 2.3.0
+ 2.6
+ 1.2.2
+ 2.5
+ 1.10
+ 1.10
+ 2.6.1
+ 2.9.9
+ 1.2.47
+ 4.1.1
+ 1.18.4
+ 1.2.5
+ 1.0.3
+ 3.8.1
+ 4.3.0
+ 3.1.0
+ 2.9.1
+ 1.5.0-b01
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework
+ spring-context-support
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ ${mybatisplus.version}
+
+
+ com.baomidou
+ mybatis-plus-generator
+
+
+
+
+ com.baomidou
+ mybatis-plus
+ ${mybatisplus.version}
+
+
+ com.github.pagehelper
+ pagehelper-spring-boot-starter
+ ${pagehelper.version}
+
+
+ mysql
+ mysql-connector-java
+ ${mysql.version}
+
+
+ com.alibaba
+ druid-spring-boot-starter
+ ${druid.version}
+
+
+ org.quartz-scheduler
+ quartz
+ ${quartz.version}
+
+
+ com.mchange
+ c3p0
+
+
+
+
+ commons-lang
+ commons-lang
+ ${commons.lang.version}
+
+
+ commons-fileupload
+ commons-fileupload
+ ${commons.fileupload.version}
+
+
+ commons-io
+ commons-io
+ ${commons.io.version}
+
+
+ commons-codec
+ commons-codec
+ ${commons.codec.version}
+
+
+ commons-configuration
+ commons-configuration
+ ${commons.configuration.version}
+
+
+ io.springfox
+ springfox-swagger2
+ ${swagger.version}
+
+
+ io.springfox
+ springfox-swagger-ui
+ ${swagger.version}
+
+
+ joda-time
+ joda-time
+ ${joda.time.version}
+
+
+ com.alibaba
+ fastjson
+ ${fastjson.version}
+
+
+ cn.hutool
+ hutool-all
+ ${hutool.version}
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+ tool
+ common-util
+ ${common-util.version}
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 2.3.2
+
+ 1.8
+ 1.8
+
+
+
+
+
\ No newline at end of file
diff --git a/ware-email-send/pom.xml b/ware-email-send/pom.xml
new file mode 100644
index 0000000..e6e2de8
--- /dev/null
+++ b/ware-email-send/pom.xml
@@ -0,0 +1,57 @@
+
+
+
+ middle-ware-parent
+ com.boot.parent
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ com.email.send
+ ware-email-send
+ jar
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ ${spring-boot.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring-boot.version}
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+ ${spring-boot.version}
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ ${spring-boot.version}
+ true
+
+
+ org.springframework
+ spring-context-support
+ ${spring.version}
+
+
+ joda-time
+ joda-time
+ ${joda.time.version}
+
+
+
+ javax.mail
+ mail
+ ${mail.version}
+
+
+
+
\ No newline at end of file
diff --git a/ware-email-send/src/gzh.jpg b/ware-email-send/src/gzh.jpg
new file mode 100644
index 0000000..df52b12
Binary files /dev/null and b/ware-email-send/src/gzh.jpg differ
diff --git a/ware-email-send/src/gzh.zip b/ware-email-send/src/gzh.zip
new file mode 100644
index 0000000..fef02e0
Binary files /dev/null and b/ware-email-send/src/gzh.zip differ
diff --git a/ware-email-send/src/main/java/com/email/send/EmailApplication.java b/ware-email-send/src/main/java/com/email/send/EmailApplication.java
new file mode 100644
index 0000000..678ded2
--- /dev/null
+++ b/ware-email-send/src/main/java/com/email/send/EmailApplication.java
@@ -0,0 +1,13 @@
+package com.email.send;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableAsync;
+
+@EnableAsync
+@SpringBootApplication
+public class EmailApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(EmailApplication.class,args) ;
+ }
+}
diff --git a/ware-email-send/src/main/java/com/email/send/controller/EmailController.java b/ware-email-send/src/main/java/com/email/send/controller/EmailController.java
new file mode 100644
index 0000000..83ca68e
--- /dev/null
+++ b/ware-email-send/src/main/java/com/email/send/controller/EmailController.java
@@ -0,0 +1,28 @@
+package com.email.send.controller;
+
+import com.email.send.model.SendEmailModel;
+import com.email.send.param.EmailType;
+import com.email.send.service.EmailService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+
+@RestController
+public class EmailController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(EmailController.class) ;
+
+ @Resource
+ private EmailService emailService ;
+
+ @RequestMapping("/sendEmail")
+ public String sendEmail (){
+ SendEmailModel model = new SendEmailModel() ;
+ model.setReceiver("xxxxx@qq.com");
+ emailService.sendEmail(EmailType.EMAIL_TEXT_KEY.getCode(),model);
+ LOGGER.info("执行结束====>>");
+ return "success" ;
+ }
+}
diff --git a/ware-email-send/src/main/java/com/email/send/model/SendEmailModel.java b/ware-email-send/src/main/java/com/email/send/model/SendEmailModel.java
new file mode 100644
index 0000000..503f385
--- /dev/null
+++ b/ware-email-send/src/main/java/com/email/send/model/SendEmailModel.java
@@ -0,0 +1,26 @@
+package com.email.send.model;
+
+/**
+ * 邮件发送参数封装
+ */
+public class SendEmailModel {
+
+ public static final String EMAIL_TEXT_KEY = "email_balance_key" ;
+ public static final String EMAIL_IMAGE_KEY = "email_req_num_key" ;
+ public static final String EMAIL_FILE_KEY = "email_open_account_key" ;
+
+ /**
+ * 收件人邮箱
+ */
+ private String receiver ;
+
+
+ public String getReceiver() {
+ return receiver;
+ }
+
+ public void setReceiver(String receiver) {
+ this.receiver = receiver;
+ }
+
+}
diff --git a/ware-email-send/src/main/java/com/email/send/param/BodyType.java b/ware-email-send/src/main/java/com/email/send/param/BodyType.java
new file mode 100644
index 0000000..53fd732
--- /dev/null
+++ b/ware-email-send/src/main/java/com/email/send/param/BodyType.java
@@ -0,0 +1,41 @@
+package com.email.send.param;
+
+public enum BodyType {
+
+ EMAIL_TEXT_BODY("email_text_key","您好:%s,我是:%s"),
+ EMAIL_IMAGE_BODY("email_image_key","图片名称:%s"),
+ EMAIL_FILE_BODY("email_file_key","文件名称:%s");
+
+ private String code ;
+ private String value ;
+ BodyType (String code,String value){
+ this.code = code ;
+ this.value = value ;
+ }
+
+ public static String getByCode (String code){
+ BodyType[] values = BodyType.values() ;
+ for (BodyType bodyType : values) {
+ if (bodyType.code.equalsIgnoreCase(code)){
+ return bodyType.value ;
+ }
+ }
+ return null ;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+}
diff --git a/ware-email-send/src/main/java/com/email/send/param/EmailParam.java b/ware-email-send/src/main/java/com/email/send/param/EmailParam.java
new file mode 100644
index 0000000..4810a7b
--- /dev/null
+++ b/ware-email-send/src/main/java/com/email/send/param/EmailParam.java
@@ -0,0 +1,34 @@
+package com.email.send.param;
+
+/**
+ * 邮箱发送参数配置
+ */
+public class EmailParam {
+ /**
+ * 邮箱服务器地址
+ */
+ // public static final String emailHost = "smtp.mxhichina.com" ; 阿里云企业邮箱配置(账号+密码)
+ // public static final String emailHost = "smtp.aliyun.com" ; 阿里云个人邮箱配置(账号+密码)
+ public static final String emailHost = "smtp.163.com" ; // 网易邮箱配置(账号+授权码)
+ /**
+ * 邮箱协议
+ */
+ public static final String emailProtocol = "smtp" ;
+ /**
+ * 邮箱发件人
+ */
+ public static final String emailSender = "xxxxxx@163.com" ;
+ /**
+ * 邮箱授权码
+ */
+ public static final String password = "authCode";
+ /**
+ * 邮箱授权
+ */
+ public static final String emailAuth = "true" ;
+ /**
+ * 邮箱昵称
+ */
+ public static final String emailNick = "知了一笑" ;
+
+}
diff --git a/ware-email-send/src/main/java/com/email/send/param/EmailType.java b/ware-email-send/src/main/java/com/email/send/param/EmailType.java
new file mode 100644
index 0000000..3807693
--- /dev/null
+++ b/ware-email-send/src/main/java/com/email/send/param/EmailType.java
@@ -0,0 +1,44 @@
+package com.email.send.param;
+
+/**
+ * 邮件发送类型
+ */
+public enum EmailType {
+
+ EMAIL_TEXT_KEY("email_text_key","文本邮件"),
+ EMAIL_IMAGE_KEY("email_image_key","图片邮件"),
+ EMAIL_FILE_KEY("email_file_key","文件邮件");
+
+ private String code ;
+ private String value ;
+ EmailType (String code,String value){
+ this.code = code ;
+ this.value = value ;
+ }
+
+ public static String getByCode (String code){
+ EmailType[] values = EmailType.values() ;
+ for (EmailType emailType : values) {
+ if (emailType.code.equalsIgnoreCase(code)){
+ return emailType.value ;
+ }
+ }
+ return null ;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+}
diff --git a/ware-email-send/src/main/java/com/email/send/service/EmailService.java b/ware-email-send/src/main/java/com/email/send/service/EmailService.java
new file mode 100644
index 0000000..332ae3a
--- /dev/null
+++ b/ware-email-send/src/main/java/com/email/send/service/EmailService.java
@@ -0,0 +1,7 @@
+package com.email.send.service;
+
+import com.email.send.model.SendEmailModel;
+
+public interface EmailService {
+ void sendEmail (String emailKey, SendEmailModel model) ;
+}
diff --git a/ware-email-send/src/main/java/com/email/send/service/impl/EmailServiceImpl.java b/ware-email-send/src/main/java/com/email/send/service/impl/EmailServiceImpl.java
new file mode 100644
index 0000000..3d4a95a
--- /dev/null
+++ b/ware-email-send/src/main/java/com/email/send/service/impl/EmailServiceImpl.java
@@ -0,0 +1,33 @@
+package com.email.send.service.impl;
+
+import com.email.send.model.SendEmailModel;
+import com.email.send.param.BodyType;
+import com.email.send.param.EmailType;
+import com.email.send.service.EmailService;
+import com.email.send.util.EmailUtil;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+@Component
+@Service
+public class EmailServiceImpl implements EmailService {
+
+ @Async("taskExecutor")
+ @Override
+ public void sendEmail(String emailKey, SendEmailModel model) {
+ try{
+ // 异步执行
+ Thread.sleep(1000);
+ String textBody = EmailUtil.convertTextModel(BodyType.getByCode(emailKey),"知了","一笑");
+ // 发送文本邮件
+ EmailUtil.sendEmail01(model.getReceiver(), EmailType.getByCode(emailKey),textBody);
+ // 发送复杂邮件:文本+图片+附件
+ String body = "自定义图片:
,网络图片:
";
+ // EmailUtil.sendEmail02(model.getReceiver(),"文本+图片+附件",body);
+ } catch (Exception e){
+ e.printStackTrace();
+ }
+
+ }
+}
diff --git a/ware-email-send/src/main/java/com/email/send/util/EmailUtil.java b/ware-email-send/src/main/java/com/email/send/util/EmailUtil.java
new file mode 100644
index 0000000..4b71732
--- /dev/null
+++ b/ware-email-send/src/main/java/com/email/send/util/EmailUtil.java
@@ -0,0 +1,160 @@
+package com.email.send.util;
+
+import com.email.send.param.EmailParam;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+import javax.mail.Message;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+import java.io.FileOutputStream;
+import java.util.Properties;
+
+/**
+ * 邮箱发送工具类
+ */
+public class EmailUtil {
+
+ public static void main(String[] args) throws Exception {
+ sendEmail01("dzyaly@aliyun.com","复杂邮件","自定义图片:
,网络图片:
") ;
+ }
+
+ /**
+ * 邮箱发送模式01:纯文本格式
+ */
+ public static void sendEmail01 (String receiver,String title,String body) throws Exception {
+ Properties prop = new Properties();
+ prop.setProperty("mail.host", EmailParam.emailHost);
+ prop.setProperty("mail.transport.protocol", EmailParam.emailProtocol);
+ prop.setProperty("mail.smtp.auth", EmailParam.emailAuth);
+ //使用JavaMail发送邮件的5个步骤
+ //1、创建session
+ Session session = Session.getInstance(prop);
+ //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
+ session.setDebug(true);
+ //2、通过session得到transport对象
+ Transport ts = session.getTransport();
+ //3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
+ ts.connect(EmailParam.emailHost, EmailParam.emailSender, EmailParam.password);
+ //4、创建邮件
+ // Message message = createEmail01(session,receiver,title,body);
+ Message message = createEmail01(session,receiver,title,body);
+ //5、发送邮件
+ ts.sendMessage(message, message.getAllRecipients());
+ ts.close();
+ }
+
+ /**
+ * 邮箱发送模式02:复杂格式
+ */
+ public static void sendEmail02 (String receiver,String title,String body) throws Exception {
+ Properties prop = new Properties();
+ prop.setProperty("mail.host", EmailParam.emailHost);
+ prop.setProperty("mail.transport.protocol", EmailParam.emailProtocol);
+ prop.setProperty("mail.smtp.auth", EmailParam.emailAuth);
+ //使用JavaMail发送邮件的5个步骤
+ //1、创建session
+ Session session = Session.getInstance(prop);
+ //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
+ session.setDebug(true);
+ //2、通过session得到transport对象
+ Transport ts = session.getTransport();
+ //3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
+ ts.connect(EmailParam.emailHost, EmailParam.emailSender, EmailParam.password);
+ //4、创建邮件
+ // Message message = createEmail01(session,receiver,title,body);
+ Message message = createEmail02(session,receiver,title,body);
+ //5、发送邮件
+ ts.sendMessage(message, message.getAllRecipients());
+ ts.close();
+ }
+
+ /**
+ * 创建文本邮件
+ */
+ private static MimeMessage createEmail01(Session session,String receiver,String title,String body)
+ throws Exception {
+ //创建邮件对象
+ MimeMessage message = new MimeMessage(session);
+ //指明邮件的发件人
+ String nick = javax.mail.internet.MimeUtility.encodeText(EmailParam.emailNick);
+ message.setFrom(new InternetAddress(nick+"<"+EmailParam.emailSender+">"));
+ //指明邮件的收件人
+ message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiver));
+ //邮件的标题
+ message.setSubject(title);
+ //邮件的文本内容
+ message.setContent(body, "text/html;charset=UTF-8");
+ //返回创建好的邮件对象
+ return message;
+ }
+
+ private static MimeMessage createEmail02 (Session session,String receiver,String title,String body)
+ throws Exception{
+ //创建邮件对象
+ MimeMessage message = new MimeMessage(session);
+ //指明邮件的发件人
+ String nick = javax.mail.internet.MimeUtility.encodeText(EmailParam.emailNick);
+ message.setFrom(new InternetAddress(nick+"<"+EmailParam.emailSender+">"));
+ //指明邮件的收件人
+ message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiver));
+ //邮件的标题
+ message.setSubject(title);
+ //文本内容
+ MimeBodyPart text = new MimeBodyPart() ;
+ text.setContent(body,"text/html;charset=UTF-8");
+ //图片内容
+ MimeBodyPart image = new MimeBodyPart();
+ image.setDataHandler(new DataHandler(new FileDataSource("ware-email-send/src/gzh.jpg")));
+ image.setContentID("gzh.jpg");
+ //附件内容
+ MimeBodyPart attach = new MimeBodyPart();
+ DataHandler file = new DataHandler(new FileDataSource("ware-email-send/src/gzh.zip"));
+ attach.setDataHandler(file);
+ attach.setFileName(file.getName());
+ //关系:正文和图片
+ MimeMultipart multipart1 = new MimeMultipart();
+ multipart1.addBodyPart(text);
+ multipart1.addBodyPart(image);
+ multipart1.setSubType("related");
+ //关系:正文和附件
+ MimeMultipart multipart2 = new MimeMultipart();
+ multipart2.addBodyPart(attach);
+ // 全文内容
+ MimeBodyPart content = new MimeBodyPart();
+ content.setContent(multipart1);
+ multipart2.addBodyPart(content);
+ multipart2.setSubType("mixed");
+ // 封装 MimeMessage 对象
+ message.setContent(multipart2);
+ message.saveChanges();
+ // 本地查看文件格式
+ message.writeTo(new FileOutputStream("F:\\MixedMail.eml"));
+ //返回创建好的邮件对象
+ return message;
+ }
+
+ /**
+ * 文本邮箱模板
+ */
+ public static String convertTextModel (String body,String param1,String param2){
+ return String.format(body,param1,param2) ;
+ }
+ /**
+ * 图片邮箱模板
+ */
+ public static String convertImageModel (String body,String param1){
+ return String.format(body,param1) ;
+ }
+ /**
+ * 文件邮箱模板
+ */
+ public static String convertFileModel (String body,String param1){
+ return String.format(body,param1) ;
+ }
+
+}
diff --git a/ware-email-send/src/main/java/com/email/send/util/TaskPoolConfig.java b/ware-email-send/src/main/java/com/email/send/util/TaskPoolConfig.java
new file mode 100644
index 0000000..c58dcde
--- /dev/null
+++ b/ware-email-send/src/main/java/com/email/send/util/TaskPoolConfig.java
@@ -0,0 +1,39 @@
+package com.email.send.util;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+/**
+ * 定义异步任务执行线程池
+ */
+@Configuration
+public class TaskPoolConfig {
+ @Bean("taskExecutor")
+ public Executor taskExecutor () {
+ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+ // 核心线程数10:线程池创建时候初始化的线程数
+ executor.setCorePoolSize(10);
+ // 最大线程数20:线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程
+ executor.setMaxPoolSize(15);
+ // 缓冲队列200:用来缓冲执行任务的队列
+ executor.setQueueCapacity(200);
+ // 允许线程的空闲时间60秒:当超过了核心线程数之外的线程在空闲时间到达之后会被销毁
+ executor.setKeepAliveSeconds(60);
+ // 线程池名的前缀:设置好了之后可以方便定位处理任务所在的线程池
+ executor.setThreadNamePrefix("taskExecutor-");
+ /*
+ 线程池对拒绝任务的处理策略:这里采用了CallerRunsPolicy策略,
+ 当线程池没有处理能力的时候,该策略会直接在 execute 方法的调用线程中运行被拒绝的任务;
+ 如果执行程序已关闭,则会丢弃该任务
+ */
+ executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+ // 设置线程池关闭的时候等待所有任务都完成再继续销毁其他的Bean
+ executor.setWaitForTasksToCompleteOnShutdown(true);
+ // 设置线程池中任务的等待时间,如果超过这个时候还没有销毁就强制销毁,以确保应用最后能够被关闭,而不是阻塞住。
+ executor.setAwaitTerminationSeconds(600);
+ return executor;
+ }
+}
diff --git a/ware-email-send/src/main/resources/application.yml b/ware-email-send/src/main/resources/application.yml
new file mode 100644
index 0000000..578a171
--- /dev/null
+++ b/ware-email-send/src/main/resources/application.yml
@@ -0,0 +1,21 @@
+# Tomcat
+server:
+ tomcat:
+ uri-encoding: UTF-8
+ max-threads: 1000
+ min-spare-threads: 30
+ port: 7005
+ connection-timeout: 5000ms
+ servlet:
+ context-path: /email
+
+spring:
+ application:
+ name: email-send
+ profiles:
+ active: dev
+ servlet:
+ multipart:
+ max-file-size: 100MB
+ max-request-size: 100MB
+ enabled: true
\ No newline at end of file