专栏首页怀英的自我修炼《Spring实战》摘录 - 29

《Spring实战》摘录 - 29

291

Q: #18.4.2 | convertAndSendToUser()能够发送消息给特定用户

A:

package spittr;
import java.util.regex.Matcher;
import java.util.regex.Patter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Service;
@Service
public class SpittleFeedServiceImpl implements SpittleFeedService{
    private SimpMessagingTemplate messaging;
    private Pattern pattern = Pattern,compile(“\\@(\\S+)");//实现用户提及功能的正则表达式
    @Autoired
    public SpittleFeedServiceImpl(SimpMessagingTemplate messaging){
        this.messaging = messaging;
    }
    
    public void broadcastSpittle(Spittle spittle){
        messaging.convertAndSend(“/topic/spittlefeed”, spittle);
    
        Matccher matcher = pattern.matcher(spittle.getMessage());
        if(matcher.find()){
            String username = matcher.group(1);
            messaging.convertAndSendToUser(//发送提醒给用户
                username, “/queue/notifications”,
                new Notification(“You just got metioned!”);
            );
        }
    }
}

292

Q: #19.1-1 | Spring的MailSender接口是Spring Email抽象API的核心组件。 它把Email发送给邮件服务器,由服务器进行邮件投递。图示。

A:

293

Q: #19.1.2-1 | 使用Spring的MailSender发送Email

A:

public void sendSimpleSpilleEmail(String to, Spittle spittle){
    SimpleMailMessage message = new SimpleMailMessage();//构造消息
    String spitterName = spittle.getSpitter().getFullName();
    message.setFrom(“noreply@spitter.com”);//Email地址
    message.setTo(to);
    message.setSubject("New spittle from” + spittlerName);
    message.setText(spitterName + “ says: “ + spittle.getText());//设置消息文本
    
    mailSender.send(message);//发送Email
}

294

Q: #20.0-1 | JMX是什么,有什么作用?

A:

假设我们希望深入了解正在运行的应用并要在运行时改变应用的配置,此时,就可以使用Java管理扩展(Java Manage- ment Extensions,JMX)了。

295

Q: #20.0-2 | JMX规范定义了如下4种类型的MBean

A:

  • 标准MBean:标准MBean的管理接口是通过在固定的接口上执行反射确定的,bean类会实现这个接口;
  • 动态MBean:动态MBean的管理接口是在运行时通过调用DynamicMBean接口的方法来确定的。因为管理接口不是通过静态接口定义的,因此可以在运行时改变;
  • 开放MBean:开放MBean是一种特殊的动态MBean,其属性和方法只限定于原始类型、原始类型的包装类以及可以分解为原始类型或原始类型包装类的任意类型;
  • 模型MBean:模型MBean也是一种特殊的动态MBean,用于充当管理接口与受管资源的中介。模型Bean并不像它们所声明的那样来编写。它们通常通过工厂生成,工厂会使用元信息来组装管理接口。

296

Q: #20.1-1 | Spring的MBeanExporter可以将Spring bean的属性和方法导出为MBean服务器中的JMX属性和操作。通过JMX服务器,JMX管理工具(例如JConsole)可以查看到正在运行的应用程序的内部情况。

A:

297

Q: #20.1-2 | 为了对MBean的属性和操作获得更细粒度的控制,Spring提供了几种选择,包括:

A:

  • 通过名称来声明需要暴露或忽略的bean方法;
  • 通过为bean增加接口来选择要暴露的方法;
  • 通过注解标注bean来标识托管的属性和操作。

298

Q: #20.1.4-1 | Spring提供了3种借助registrationBehaviorName属性来处理MBean名字冲突的机制

A:

  • FAIL_ON_EXISTING:如果已存在相同名字的MBean,则失败(默认行为);
  • IGNORE_EXISTING:忽略冲突,同时也不注册新的MBean;
  • REPLACING_EXISTING:用新的MBean覆盖已存在的MBean;

299

Q: #20.2-1 | JCP,是什么?

A: JCP(Java Community Process)制订了JSR-160:Java管理扩展远程访问API规范(Java Management Extensions Remote API Specification)

300

Q: #20.2.3-1 | MBeanFactoryBean创建远程MBean的代理。客户端通过此代理与远程MBean进行交互,就像它是本地Bean一样。

A:

本文分享自微信公众号 - 怀英的自我修炼(hydzwxl),作者:怀英Qiu

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《Spring实战》摘录 - 30

    Q: #21.1-1 | 在Spring家族中,Spring Boot是令人兴奋(也许我敢说它是改变游戏规则的)的新项目。它提供了四个主要的特性,能够改变开发S...

    用户1335799
  • 一般计算机工程师能实现的愿景

    用户1335799
  • 怀英漫谈4-JS中的Map

    昨天是2017年工作的最后一天,伴随着昨天的结束,2017年的工作告一段落。 昨天和前天,在工作中,将一个双重循环的寻找逻辑,改为饿了用对象模拟的Map逻辑,使...

    用户1335799
  • JConsole、VisualVM 依赖的 JMX 技术到底是什么

    如果你之前没接触过,一定会出现疑问三连击,"这是个什么玩意儿?干嘛的?有啥用?"。

    古时的风筝
  • Java管理扩展指南之MBean简介

    MBean是一个被管理的Java对象,就像Javabean组件一样,但是它遵从JMX规范的设计模式。MBean可以表示设备、应用或者任何需要被管理的资源。MBe...

    哲洛不闹
  • 2019. 4 腾讯云AMD拼团

    https://cloud.tencent.com/act/group/amdv2/detail?from=10521&group=64752

    用户3995581
  • Python下将一般对象打印成Json

      有的时候,我们写Python程序需要处理复杂对象,过程中调试可能需要去看看产生的对象如何,我们可以把它打印成json来看,这是个不错的办法。

    窗户
  • 2020-mac 安装jdk1.8

    接受协议,选择对应的Mac OS X一栏下载JDK,下载jdk必须要登录才可以下载,没有账号可以点击这里,百度网盘提取码:m3go

    斑马
  • 与百度“合体”后,进击的Siri!

    2011年Siri以iPhone4S内置应用的身份面世,开启了语音助手大众化的时代。最初Siri与中文用户无缘,直到2012年WWDC(苹果全球开发者大会)Si...

    罗超频道
  • Inotify机制

    Inotify API用于检测文件系统变化的机制。Inotify可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里的内容都会...

    DragonKingZhu

扫码关注云+社区

领取腾讯云代金券