我需要在springboot中的组件之间创建一条消息。为此,我创建了一个messagehandler组件,需要使用一个键并清除输出消息,因为它具有单例作用域。
我不知道这是不是最好的办法。有什么建议吗?
@Component
public class MessageHandler {
@Autowired
private JavaMailSender emailSender;
Map<String, StringBuilder> outputMessage = new HashMap<String, StringBuilder>();
public void addMessage(@NotNull String key, @NotNull String str) {
if (key != null && !key.isEmpty() && str != null && !str.isEmpty()) {
if (outputMessage.containsKey(key)) {
outputMessage.put(key, outputMessage.get(key).append(str + "\n"));
} else {
outputMessage.put(key, new StringBuilder(str + "\n"));
}
}
}
public String getMessage(@NotNull String key) {
if (key != null && !key.isEmpty())
return outputMessage.get(key).toString();
return "";
}
public void clear(@NotNull String key) {
outputMessage.remove(key);
}
public void sendStringAsAttachment(String to, String subject, String text, String filename) {
MimeMessage message = emailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text);
byte[] bytes = getMessage(filename).getBytes(Charset.forName("UTF-8"));
helper.addAttachment(filename, new ByteArrayResource(bytes));
} catch (MessagingException ex) {
logger.error("Could not send file {}", ex.getMessage());
}
emailSender.send(message);
}
}
暂无答案!
目前还没有任何答案,快来回答吧!