前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Spring实战》摘录 - 29

《Spring实战》摘录 - 29

作者头像
用户1335799
发布2019-08-29 17:48:27
3470
发布2019-08-29 17:48:27
举报

291

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

A:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 怀英的自我修炼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档