最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot?集成短信和郵件的配置示例詳解

 更新時間:2022年04月22日 08:58:38   作者:tansci  
這篇文章主要介紹了SpringBoot?集成短信和郵件的相關(guān)知識,項目中使用lombok插件和swagger依賴,無相關(guān)依賴的請自行修改,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下

準備工作

1、集成郵件

以QQ郵箱為例

在發(fā)送郵件之前,要開啟POP3和SMTP協(xié)議,需要獲得郵件服務器的授權(quán)碼,獲取授權(quán)碼:

1、設(shè)置>賬戶

在賬戶的下面有一個開啟SMTP協(xié)議的開關(guān)并進行密碼驗證:

2、獲取成功的授權(quán)碼

2、集成短信

以阿里云短信服務為例

1、登陸阿里云—>進入控制臺—>開通短信服務

進入后根據(jù)提示開通短信服務即可。

2、充值

后期發(fā)短信測試需要,暫時可以跳過此步驟。

3、獲取AccessKey和AccessSercet

文檔使用指引: https://help.aliyun.com/document_detail/59210.html?spm=a2c6h.13066369.0.0.4b3516b4kN0052

4、API

OpenAPI地址: https://next.api.aliyun.com/document/Dysmsapi/2017-05-25/overview

依賴

1、郵件

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

2、短信

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>dysmsapi20170525</artifactId>
    <version>2.0.4</version>
</dependency>

配置

1、配置郵箱基本信息

spring:
  mail:
    # 配置 SMTP 服務器地址
    host: smtp.qq.com
    # 發(fā)送者郵箱
    username: 742354529@qq.com
    # 配置密碼,注意不是真正的密碼,而是申請的授權(quán)碼
    password: vjstfghblprwbdbd
    # 端口號465或587
    port: 587 
    # 默認的郵件編碼為UTF-8
    default-encoding: UTF-8
    # 配置SSL 加密工廠
    properties:
      mail:
        smtp:
          socketFactoryClass: javax.net.ssl.SSLSocketFactory
        # 表示開啟DEBUG模式,郵件發(fā)送過程的日志會在控制臺打印出來
        debug: true

SMTP 服務器地址

  • 126郵箱SMTP服務器地址:smtp.126.com,端口號:465或者994
  • 2163郵箱SMTP服務器地址:smtp.163.com,端口號:465或者994
  • yeah郵箱SMTP服務器地址:smtp.yeah.net,端口號:465或者994
  • qq郵箱SMTP服務器地址:smtp.qq.com,端口號465或587*

2、短信配置

# 阿里云短信配置
sms:
  access-id: LTAI5tDP3SDQC9yvCguiiFDr
  access-key: EGSDQsLxCVS5dwjS8DCxmYQ124XySV
  sign-name: 
  endpoint: dysmsapi.aliyuncs.com

編碼

1、郵件

1.1、MailService.java

package com.tanersci.service;

import com.tanersci.dto.MailMessageDto;
import com.tanersci.vo.MessageVo;
/**
 * @ClassName: MailService.java
 * @ClassPath: com.tanersci.service.MailService.java
 * @Description: 郵件
 * @Author: tanyp
 * @Date: 2021/6/7 9:18
 **/
public interface MailService {
	/**
	 * @MonthName: sendSimple
	 * @Description: 普通郵件發(fā)送
	 * @Author: tanyp
	 * @Date: 2021/6/7 9:30
	 * @Param: [dto]
	 * @return: void
	 **/
	MessageVo sendSimple(MailMessageDto dto);
	 * @MonthName: sendAttachFile
	 * @Description: 帶附件的郵件
	MessageVo sendAttachFile(MailMessageDto dto);
	 * @MonthName: sendImgRes
	 * @Description: 帶圖片資源的郵件
	MessageVo sendImgRes(MailMessageDto dto);
}

1.2、MailServiceImpl.java

package com.tanersci.service.impl;

import com.alibaba.fastjson.JSON;
import com.tanersci.dto.MailMessageDto;
import com.tanersci.vo.MessageVo;
import com.tanersci.constant.Constants;
import com.tanersci.service.MailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.Objects;
/**
 * @ClassName: MailServiceImpl.java
 * @ClassPath: com.tanersci.service.impl.MailServiceImpl.java
 * @Description: 郵件
 * @Author: tanyp
 * @Date: 2021/6/7 9:18
 **/
@Slf4j
@Service
public class MailServiceImpl implements MailService {
	@Value("${spring.mail.username}")
	private String sender;
	@Autowired
	private JavaMailSender javaMailSender;
	/**
	 * @MonthName: sendSimple
	 * @Description: 普通郵件發(fā)送
	 * @Author: tanyp
	 * @Date: 2021/6/7 9:30
	 * @Param: [dto]
	 * @return: void
	 **/
	@Override
	public MessageVo sendSimple(MailMessageDto dto) {
		try {
			log.info("=======普通郵件發(fā)送開始,請求參數(shù):{}", JSON.toJSON(dto));
			// 構(gòu)建一個郵件對象
			SimpleMailMessage message = new SimpleMailMessage();
			// 設(shè)置郵件主題
			message.setSubject(dto.getSubject());
			// 設(shè)置郵件發(fā)送者,這個跟application.yml中設(shè)置的要一致
			message.setFrom(sender);
			// 設(shè)置郵件接收者,可以有多個接收者,中間用逗號隔開,以下類似
			// message.setTo("10*****16@qq.com","12****32*qq.com");
			message.setTo(dto.getRecipient());
			// 設(shè)置郵件抄送人,可以有多個抄送人
			if (Objects.nonNull(dto.getCc())) {
				message.setCc(dto.getCc());
			}
			// 設(shè)置隱秘抄送人,可以有多個
			if (Objects.nonNull(dto.getBcc())) {
				message.setBcc(dto.getBcc());
			// 設(shè)置郵件發(fā)送日期
			message.setSentDate(new Date());
			// 設(shè)置郵件的正文
			message.setText(dto.getText());
			// 發(fā)送郵件
			javaMailSender.send(message);
			log.info("=======普通郵件發(fā)送結(jié)束");
			return MessageVo.builder().code(Constants.NEWS_SUCCESS_CODE).message(Constants.NEWS_SUCCESS_MESSAGE).build();
		} catch (MailException e) {
			log.error("====郵件====sendSimple=====異常:{}", e);
			return MessageVo.builder().code(Constants.NEWS_FAIL_CODE).message(Constants.NEWS_FAIL_MESSAGE).build();
		}
	}
	 * @MonthName: sendAttachFile
	 * @Description: 帶附件的郵件
	public MessageVo sendAttachFile(MailMessageDto dto) {
			log.info("=======帶附件的郵件開始,請求參數(shù):{}", JSON.toJSON(dto));
			MimeMessage mimeMessage = javaMailSender.createMimeMessage();
			// true表示構(gòu)建一個可以帶附件的郵件對象
			MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true);
			// 第一個參數(shù)是自定義的名稱,后綴需要加上,第二個參數(shù)是文件的位置
			dto.getAttachments().forEach(file -> {
				try {
					message.addAttachment(file.getName(), file);
				} catch (MessagingException e) {
					log.error("=========郵件附件解析異常:{}", e);
				}
			});
			javaMailSender.send(mimeMessage);
			log.info("=======帶附件的郵件結(jié)束");
		} catch (MessagingException e) {
			log.error("==========郵件====sendAttachFile=====異常:{}", e);
	 * @MonthName: sendImgRes
	 * @Description: 帶圖片資源的郵件
	public MessageVo sendImgRes(MailMessageDto dto) {
			log.info("=======帶圖片資源的郵件開始,請求參數(shù):{}", JSON.toJSON(dto));
			// 第一個參數(shù)指的是html中占位符的名字,第二個參數(shù)就是文件的位置
					message.addInline(file.getName(), new FileSystemResource(file));
					log.error("=========郵件圖片解析異常:{}", e);
			log.info("=======帶圖片資源的郵件結(jié)束");
			log.error("====郵件====sendImgRes=====異常:{}", e);
}

1.3、VO、DTO及常量類

MailMessageDto.java

package com.tanersci.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.File;
import java.io.Serializable;
import java.util.List;
/**
 * @ClassName: MailMessageDto.java
 * @ClassPath: com.tanersci.dto.MailMessageDto.java
 * @Description: 郵件消息
 * @Author: tanyp
 * @Date: 2021/6/7 9:20
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ApiModel(value = "郵件消息")
public class MailMessageDto implements Serializable {
	private static final long serialVersionUID = 5483400172436286831L;
	@ApiModelProperty(value = "郵件主題")
	private String subject;
	@ApiModelProperty(value = "接收者:可以有多個接收者,中間用逗號隔開")
	private String recipient;
	@ApiModelProperty(value = "抄送人:可以有多個抄送人,中間用逗號隔開")
	private String cc;
	@ApiModelProperty(value = "隱秘抄送人:可以有多個抄送人,中間用逗號隔開")
	private String bcc;
	@ApiModelProperty(value = "正文")
	private String text;
	@ApiModelProperty(value = "模板編碼")
	private String code;
	@ApiModelProperty(value = "附件、圖片")
	private List<File> attachments;
}

MessageVo.java

package com.tanersci.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
 * @ClassName: MessageVo.java
 * @ClassPath: com.tanersci.vo.MessageVo.java
 * @Description: 短信、郵件消息返回值
 * @Author: tanyp
 * @Date: 2021/6/7 11:35
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ApiModel(value = "短信、郵件消息返回值")
public class MessageVo implements Serializable {
	private static final long serialVersionUID = 5287525465339500144L;
	@ApiModelProperty(value = "狀態(tài)碼")
	private String code;
	@ApiModelProperty(value = "狀態(tài)碼的描述")
	private String message;
	@ApiModelProperty(value = "請求ID")
	private String requestId;
	@ApiModelProperty(value = "發(fā)送回執(zhí)ID")
	private String bizId;
	@ApiModelProperty(value = "模板編碼")
	private String templateCode;
}

Constants.java

package com.tanersci.constant;

/**
 * @ClassName: Constants.java
 * @ClassPath: com.tanersci.constant.Constants.java
 * @Description: 常量
 * @Author: tanyp
 * @Date: 2021/5/22 15:54
 **/
public class Constants {
	/**
	 * 消息發(fā)送狀態(tài)碼
	 */
	public final static String NEWS_SUCCESS_CODE = "OK";
	public final static String NEWS_SUCCESS_MESSAGE = "發(fā)送成功";
	public final static String NEWS_FAIL_CODE = "FAIL";
	public final static String NEWS_FAIL_MESSAGE = "發(fā)送失敗";
}

2、短信

2.1、SmsService.java

package com.tanersci.service;

import com.tanersci.dto.SmsMessageDto;
import com.tanersci.dto.SmsTemplateDto;
import com.tanersci.vo.MessageVo;
/**
 * @ClassName: SmsService.java
 * @ClassPath: com.tanersci.service.SmsService.java
 * @Description: 短信
 * @Author: tanyp
 * @Date: 2021/6/7 10:56
 **/
public interface SmsService {
	/**
	 * @MonthName: send
	 * @Description: 發(fā)短信
	 * @Author: tanyp
	 * @Date: 2021/6/7 14:50
	 * @Param: [dto]
	 * @return: com.tanersci.vo.MessageVo
	 **/
	MessageVo send(SmsMessageDto dto);
	 * @MonthName: addSmsTemplate
	 * @Description: 申請短信模板
	 * @Param: [template]
	MessageVo addSmsTemplate(SmsTemplateDto template);
	 * @MonthName: deleteSmsTemplate
	 * @Description: 刪除短信模板
	MessageVo deleteSmsTemplate(SmsTemplateDto template);
	 * @MonthName: modifySmsTemplate
	 * @Description: 修改未通過審核的短信模板
	MessageVo modifySmsTemplate(SmsTemplateDto template);
	 * @MonthName: querySmsTemplate
	 * @Description: 查詢短信模板的審核狀態(tài)
	MessageVo querySmsTemplate(SmsTemplateDto template);
}

2.2、SmsServiceImpl.java

package com.tanersci.service.impl;

import com.alibaba.fastjson.JSON;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.*;
import com.aliyun.teaopenapi.models.Config;
import com.tanersci.dto.SmsMessageDto;
import com.tanersci.dto.SmsTemplateDto;
import com.tanersci.vo.MessageVo;
import com.tanersci.config.SmsConfig;
import com.tanersci.constant.Constants;
import com.tanersci.service.SmsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Objects;
import java.util.UUID;
/**
 * @ClassName: SmsServiceImpl.java
 * @ClassPath: com.tanersci.service.impl.SmsServiceImpl.java
 * @Description: 短信
 * @Author: tanyp
 * @Date: 2021/6/7 10:57
 **/
@Slf4j
@Service
public class SmsServiceImpl implements SmsService {
	@Autowired
	private SmsConfig smsConfig;
	/**
	 * @MonthName: createClient
	 * @Description: SK初始化賬號Client
	 * @Author: tanyp
	 * @Date: 2021/6/7 15:44
	 * @Param: [accessId, accessKey, endpoint]
	 * @return: com.aliyun.teaopenapi.Client
	 **/
	public Client createClient() throws Exception {
		Config config = new Config();
		config.accessKeyId = smsConfig.getAccessId();
		config.accessKeySecret = smsConfig.getAccessKey();
		config.endpoint = smsConfig.getEndpoint();
		return new Client(config);
	}
	 * @MonthName: send
	 * @Description: 發(fā)短信
	 * @Date: 2021/6/7 14:50
	 * @Param: [dto]
	 * @return: com.tanersci.vo.MessageVo
	@Override
	public MessageVo send(SmsMessageDto dto) {
		try {
			log.info("======發(fā)送短信開始,請求參數(shù):{}", JSON.toJSON(dto));
			Client client = createClient();
			// 組裝請求對象
			SendSmsRequest request = new SendSmsRequest();
			// 外部流水擴展字段
			String outId = UUID.randomUUID().toString();
			request.setOutId(outId);
			// 支持對多個手機號碼發(fā)送短信,手機號碼之間以英文逗號(,)分隔。上限為1000個手機號碼。批量調(diào)用相對于單條調(diào)用及時性稍有延遲。
			request.setPhoneNumbers(dto.getPhone());
			// 短信簽名名稱
			request.setSignName(smsConfig.getSignName());
			// 短信模板ID
			request.setTemplateCode(dto.getTemplateCode());
			// 短信模板變量對應的實際值,JSON格式。如果JSON中需要帶換行符,請參照標準的JSON協(xié)議處理。
			request.setTemplateParam(JSON.toJSONString(dto.getParam()));
			// 發(fā)送短信
			SendSmsResponse res = client.sendSms(request);
			
			MessageVo message = MessageVo.builder().build();
			if (Objects.equals(Constants.NEWS_SUCCESS_CODE, res.body.getCode())) {
				log.info("======發(fā)送短信成功,返回值:{}", JSON.toJSON(res.body));
				message.setCode(Constants.NEWS_SUCCESS_CODE);
				message.setMessage(Constants.NEWS_SUCCESS_MESSAGE);
			} else {
				log.info("======發(fā)送短信失敗,返回值:{}", JSON.toJSON(res.body));
				message.setCode(Constants.NEWS_FAIL_CODE);
				message.setMessage(Constants.NEWS_FAIL_MESSAGE);
			}
			return message;
		} catch (Exception e) {
			log.error("======發(fā)送短信異常:{}", e.getMessage());
			e.printStackTrace();
			return MessageVo.builder().code(Constants.NEWS_FAIL_CODE).message(Constants.NEWS_FAIL_MESSAGE).build();
		}
	 * @MonthName: addSmsTemplate
	 * @Description: 申請短信模板
	 * @Param: [template]
	public MessageVo addSmsTemplate(SmsTemplateDto template) {
			log.info("======申請短信模板,請求參數(shù):{}", JSON.toJSON(template));
			AddSmsTemplateRequest request = new AddSmsTemplateRequest();
			request.setTemplateType(template.getTemplateType());
			request.setTemplateName(template.getTemplateName());
			request.setTemplateContent(template.getTemplateContent());
			request.setRemark(template.getRemark());
			AddSmsTemplateResponse res = client.addSmsTemplate(request);
			if (Objects.equals(TeamConstants.NEWS_SUCCESS_CODE, res.body.getCode())) {
				log.info("======申請短信模板,返回值:{}", JSON.toJSON(res.body));
				return MessageVo.builder()
						.code(Constants.NEWS_SUCCESS_CODE)
						.message(Constants.NEWS_SUCCESS_MESSAGE)
						.templateCode(res.getBody().templateCode)
						.build();
				return MessageVo.builder().code(Constants.NEWS_FAIL_CODE).message(Constants.NEWS_FAIL_MESSAGE).build();
			log.error("======申請短信模板,異常:{}", e.getMessage());
	 * @MonthName: deleteSmsTemplate
	 * @Description: 刪除短信模板
	public MessageVo deleteSmsTemplate(SmsTemplateDto template) {
			log.info("======刪除短信模板,請求參數(shù):{}", JSON.toJSON(template));
			DeleteSmsTemplateRequest request = new DeleteSmsTemplateRequest();
			request.setTemplateCode(template.getTemplateCode());
			DeleteSmsTemplateResponse res = client.deleteSmsTemplate(request);
				log.info("======刪除短信模板,返回值:{}", JSON.toJSON(res.body));
				return MessageVo.builder().code(Constants.NEWS_SUCCESS_CODE).message(Constants.NEWS_SUCCESS_MESSAGE).build();
			log.error("======刪除短信模板,異常:{}", e);
	 * @MonthName: modifySmsTemplate
	 * @Description: 修改未通過審核的短信模板
	public MessageVo modifySmsTemplate(SmsTemplateDto template) {
			log.info("======修改未通過審核的短信模板,請求參數(shù):{}", JSON.toJSON(template));
			ModifySmsTemplateRequest request = new ModifySmsTemplateRequest();
			ModifySmsTemplateResponse res = client.modifySmsTemplate(request);
				log.info("======修改未通過審核的短信模板,返回值:{}", JSON.toJSON(res.body));
			log.error("======修改未通過審核的短信模板,異常:{}", e.getMessage());
	 * @MonthName: querySmsTemplate
	 * @Description: 查詢短信模板的審核狀態(tài)
	public MessageVo querySmsTemplate(SmsTemplateDto template) {
			log.info("======查詢短信模板的審核狀態(tài),請求參數(shù):{}", JSON.toJSON(template));
			QuerySmsTemplateRequest request = new QuerySmsTemplateRequest();
			QuerySmsTemplateResponse res = client.querySmsTemplate(request);
				log.info("======查詢短信模板的審核狀態(tài),返回值:{}", JSON.toJSON(res.body));
			log.error("======查詢短信模板的審核狀態(tài),異常:{}", e.getMessage());
}

2.3、SmsConfig.java

package com.tanersci.config;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
/**
 * @ClassName: SmsConfig.java
 * @ClassPath: com.tanersci.config.SmsConfig.java
 * @Description: 短信配置
 * @Author: tanyp
 * @Date: 2021/6/7 16:41
 **/
@Data
@Component
public class SmsConfig {
	@Value("${sms.access-id}")
	private String accessId;
	@Value("${sms.access-key}")
	private String accessKey;
	@Value("${sms.sign-name}")
	private String signName;
	@Value("${sms.endpoint}")
	private String endpoint;
}

2.4、VO、DTO類

MessageVo 同用郵件的

MailMessageDto.java

package com.tanersci.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
 * @ClassName: MailMessageDto.java
 * @ClassPath: com.tanersci.dto.SmsMessageDto.java
 * @Description: 短信
 * @Author: tanyp
 * @Date: 2021/6/7 9:20
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ApiModel(value = "短信消息")
public class SmsMessageDto implements Serializable {
	private static final long serialVersionUID = 3427970548460798908L;
	@ApiModelProperty(value = "手機號,多個以逗號隔開")
	private String phone;
	@ApiModelProperty(value = "模板編碼")
	private String templateCode;
	@ApiModelProperty(value = "模板參數(shù)")
	private TemplateParamDto param;
	private String code;
}

SmsTemplate.java

package com.tanersci.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
 * @ClassName: SmsTemplate.java
 * @ClassPath: com.tanersci.dto.SmsTemplateDto.java
 * @Description: 短信模板
 * @Author: tanyp
 * @Date: 2021/6/7 15:02
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SmsTemplateDto implements Serializable {
	private static final long serialVersionUID = -8909531614461840038L;
	/**
	 * 模板類型:0:驗證碼,1:短信通知,2:推廣短信,3:國際/港澳臺消息。
	 */
	private Integer templateType;
	 * 模板名稱,長度為1~30個字符
	private String templateName;
	 * 模板內(nèi)容,長度為1~500個字符
	private String templateContent;
	 * 短信模板CODE
	private String templateCode;
	 * 短信模板申請說明。請在申請說明中描述您的業(yè)務使用場景,長度為1~100個字符
	private String remark;
}

注意

項目中使用lombok插件和swagger依賴,無相關(guān)依賴的請自行修改。

到此這篇關(guān)于SpringBoot 集成短信和郵件的文章就介紹到這了,更多相關(guān)SpringBoot 集成短信和郵件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在SpringBoot下讀取自定義properties配置文件的方法

    在SpringBoot下讀取自定義properties配置文件的方法

    這篇文章主要介紹了在SpringBoot下讀取自定義properties配置文件的方法,文中涉及到了Spring-boot中讀取config配置文件的兩種方式,需要的朋友可以參考下
    2017-12-12
  • springMVC的生命周期詳解

    springMVC的生命周期詳解

    本篇文章主要介紹了springMVC的生命周期詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • springboot加載一個properties文件轉(zhuǎn)換為map方式

    springboot加載一個properties文件轉(zhuǎn)換為map方式

    這篇文章主要介紹了springboot加載一個properties文件轉(zhuǎn)換為map方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • SpringBoot獲取Request和Response方法代碼解析

    SpringBoot獲取Request和Response方法代碼解析

    這篇文章主要介紹了SpringBoot獲取Request和Response方法代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • java多線程之Future和FutureTask使用實例

    java多線程之Future和FutureTask使用實例

    這篇文章主要介紹了java多線程之Future和FutureTask使用實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • java中的可變參數(shù)使用方法

    java中的可變參數(shù)使用方法

    這篇文章主要介紹了java中的可變參數(shù)使用方法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Java程序中使用JavaMail發(fā)送帶圖片和附件的郵件

    Java程序中使用JavaMail發(fā)送帶圖片和附件的郵件

    這篇文章主要介紹了Java程序中使用JavaMail發(fā)送帶圖片和附件的郵件,JavaMail是專門用來處理郵件的Java API,需要的朋友可以參考下
    2015-11-11
  • MybatisPlus條件查詢的具體使用

    MybatisPlus條件查詢的具體使用

    MybatisPlus通過條件構(gòu)造器可以組裝復雜的查詢條件,本文主要介紹了MybatisPlus條件查詢的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • smslib發(fā)短信實例代碼(電腦發(fā)短信)

    smslib發(fā)短信實例代碼(電腦發(fā)短信)

    smslib發(fā)短信實例,大家可以參考使用開發(fā)自己的程序
    2013-12-12
  • Spark-Sql入門程序示例詳解

    Spark-Sql入門程序示例詳解

    Spark?SQL?作為?Spark?四大核心組件之一,主要用于處理結(jié)構(gòu)化數(shù)據(jù)或半結(jié)構(gòu)化數(shù)據(jù),它支持在Spark?中使用?SQL?對數(shù)據(jù)進行查詢,本文給大家介紹Spark-Sql入門程序,感興趣的朋友跟隨小編一起看看吧
    2021-12-12

最新評論

广丰县| 东海县| 琼结县| 甘德县| 靖江市| 奉贤区| 邳州市| 建平县| 景泰县| 达日县| 中牟县| 潜山县| 秀山| 惠水县| 万源市| 万年县| 长治县| 岐山县| 屏山县| 大石桥市| 喀什市| 黄梅县| 满洲里市| 商南县| 广昌县| 龙里县| 赞皇县| 炎陵县| 玛纳斯县| 海南省| 泽库县| 新安县| 旬邑县| 宜都市| 黔西县| 乐安县| 绥阳县| 云霄县| 民乐县| 灵石县| 扎鲁特旗|