spring boot中组件之间的messagehandler

v09wglhw  于 2021-07-14  发布在  Java
关注(0)|答案(0)|浏览(353)

我需要在springboot中的组件之间创建一条消息。为此,我创建了一个messagehandler组件,需要使用一个键并清除输出消息,因为它具有单例作用域。
我不知道这是不是最好的办法。有什么建议吗?

  1. @Component
  2. public class MessageHandler {
  3. @Autowired
  4. private JavaMailSender emailSender;
  5. Map<String, StringBuilder> outputMessage = new HashMap<String, StringBuilder>();
  6. public void addMessage(@NotNull String key, @NotNull String str) {
  7. if (key != null && !key.isEmpty() && str != null && !str.isEmpty()) {
  8. if (outputMessage.containsKey(key)) {
  9. outputMessage.put(key, outputMessage.get(key).append(str + "\n"));
  10. } else {
  11. outputMessage.put(key, new StringBuilder(str + "\n"));
  12. }
  13. }
  14. }
  15. public String getMessage(@NotNull String key) {
  16. if (key != null && !key.isEmpty())
  17. return outputMessage.get(key).toString();
  18. return "";
  19. }
  20. public void clear(@NotNull String key) {
  21. outputMessage.remove(key);
  22. }
  23. public void sendStringAsAttachment(String to, String subject, String text, String filename) {
  24. MimeMessage message = emailSender.createMimeMessage();
  25. try {
  26. MimeMessageHelper helper = new MimeMessageHelper(message, true);
  27. helper.setTo(to);
  28. helper.setSubject(subject);
  29. helper.setText(text);
  30. byte[] bytes = getMessage(filename).getBytes(Charset.forName("UTF-8"));
  31. helper.addAttachment(filename, new ByteArrayResource(bytes));
  32. } catch (MessagingException ex) {
  33. logger.error("Could not send file {}", ex.getMessage());
  34. }
  35. emailSender.send(message);
  36. }
  37. }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题