首页 > 作文

如何在Netty中注解使用Service或者Mapper

更新时间:2023-04-05 00:40:18 阅读: 评论:0

目录
netty注解使用rvice或mapperhandlerrver创建rver二次修订netty handler注入rvice为空注入方式

netty注解使用rvice或mapper

springboot搭配netty使用,在handler中注解使用rvice/mapper 一直 为null。起初使用 springboot启动类继承applicationcontextaware,再写一个静态方法获取bean来解决。

放在服务器上跑了几个小时就出现了问题,好像是该方案造成的。

另辟蹊径,再看网上给出的答案,因为 handler 是 new出来的,不被spring管理,所以注解根本就没有什么作用。

思前想后,(有bug,下文修正解决:觉得可以给handler添加@component 注解交给spring 管理,再通过构造方法把 handler 传递给s诗歌朗诵背景音乐配乐大全erver。结构代码):

handler

@componentpublic class obdhandler extends channelinboundhandleradapter { private final logger logger = loggerfactory.getlogger(getclass());  @autowired private obdmapper mobdmapper;}

rver

public class obdrver { private logger log = loggerfactory.getlogger(getclass()); private obdhandler obdhandler; private int port; public obdrver(int port,obdhandler obdhandler) {  this.port = port;  this.obdhandler = obdhan高考什么时候出成绩 2020dler; } private void bind() throws exception {  eventloopgroup group = new nioeventloopgroup();  rverbootstrap rverbootstrap = new rverbootstrap();  rverbootstrap.group(group)//  .channel(niorversocketchannel.class) //  .childhandler(new channelinitializer<socketchannel>() { //   @override   public void initchannel(socketchannel ch) throws exception {    ch.pipeline().addlast(new lengthfieldbadframedecoder(1024*1024,0,4));    ch.pipeline().addlast(obdhandler);   }  });  }}

创建rver

@configurationpublic class nettyconfig {  @autowired private obdhandler obdhandler;  @bean public obdrver obdrver(){  obdrver obdrver = new obdrver(7788,obdhandler);  obdrver.startrver();  return obdrver; }}

二次修订

并发需要创建多个handler,而被spring托管的单例handler会造成以下错误:

is not a @sh德不孤必有邻出自哪arable handler, so can’t be added or removed multiple times.

最终通过在rv商场店铺设计er中注入 rvice/mapper,再通过handler构造传递:

public class obdrver {  @autowired  private obdmapper mobdmapper;  public obdrver(int port) {  this.port = port; } private void bind() throws exception {  eventloopgroup group = new nioeventloopgroup();  rverbootstrap rverbootstrap = new rverbootstrap();  rverbootstrap.group(group)//  .channel(niorversocketchannel.class) //  .childhandler(new channelinitializer<socketchannel>() { //   @override   public void initchannel(socketchannel ch) throws exception {    ch.pipeline().addlast(new lengthfieldbadframedecoder(1024*1024,0,4));    ch.pipeline().addlast(new obdhandler(mobdmapper));   }  });  }}

netty handler注入rvice为空

注入方式

@slf4j@componentpublic class bootnettychannelinboundhandleradapter extends channelinboundhandleradapter { public static bootnettychannelinboundhandleradapter bootnettychannelinboundhandleradapter;  //1.正常注入[记得主类也需要使用@component注解]  @autowired  private deviceuprvice deviceuprvice;  //2.初始化构造方法一定要有  public bootnettychannelinboundhandleradapter() {  }  //3.容器初始化的时候进行执行-这里是重点  @postconstruct  public void init() {    bootnettychannelinboundhandleradapter = this;    bootnettychannelinboundhandleradapter.deviceuprvice = this.deviceuprvice;  }}

完成以上步骤后通过

bootnettychannel第一个一百年目标inboundhandleradapter.deviceuprvice

调用rvice类即可

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。

本文发布于:2023-04-05 00:40:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/f53d50e68f9ee8bbccbf1cb57f622db0.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:如何在Netty中注解使用Service或者Mapper.doc

本文 PDF 下载地址:如何在Netty中注解使用Service或者Mapper.pdf

下一篇:返回列表
标签:注解   方法   初始化   为空
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图