new 的线程导入无法通过 @Autowired 注入 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zy2019
V2EX    Java

new 的线程导入无法通过 @Autowired 注入

  •  
  •   zy2019 2019-06-27 16:19:42 +08:00 3662 次点击
    这是一个创建于 2373 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目 spring boot + gradle + netty,

    我在项目启动时创建了这么一个线程: new UdpServerThread(8000).start(); 直接启动 netty 的服务器

    然后这个作为服务器接收客户端信息在 protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket packet) 中接收信息

    接收到信息后,会收到的数据传给方法 A

    方法 A 中会通过 @Autowired DataCache dataCache; 去调用缓存

    现在的话就一直在调用 dataCache 时报空指针

    大概查了下,问题可能出现 new 的线程不在 spring 容器中,但查到的解决办法不是很好,所以想问下,一般这个改怎么解决呢?

    10 条回复    2019-06-27 18:27:48 +08:00
    hfc
        1
    hfc  
       2019-06-27 17:03:19 +08:00
    UdpServerThread 类中加一个成员变量,再通过 set 方法赋值
    anakinsky
        2
    anakinsky  
       2019-06-27 17:03:25 +08:00
    封装个 SpringBeanUtils,beanFactory.getBean(beanName);
    Ahaochan
        3
    Ahaochan  
       2019-06-27 17:10:00 +08:00
    guoyuchuan
        4
    guoyuchuan  
       2019-06-27 17:35:58 +08:00
    new 的怎么能调用 spring 容器的 bean ;
    guoyuchuan
        5
    guoyuchuan  
       2019-06-27 17:39:18 +08:00
    new 之前在类中加载 spring 容器就行;
    方法很多,百度 spring Aware 接口 就知道怎么做了;
    gz911122
        6
    gz911122  
       2019-06-27 17:39:20 +08:00
    UdpServerThread 被 spring 管理了吗
    guoyuchuan
        7
    guoyuchuan  
       2019-06-27 17:41:20 +08:00
    alangz
        8
    alangz  
       2019-06-27 17:43:42 +08:00
    你自己实例化的对象自然没法直接让 Spring 帮你注入依赖,你需要获取到 IoC 的上下文(多种方式),然后通过这个上下文来拿到被 Spring 管理的 Bean。
    Spring 的核心还是应该多看看。
    arthas2234
        9
    arthas2234  
       2019-06-27 18:19:49 +08:00
    不要通过 new 来启动,可以使用 @PostConstruct 注解或者实现 ApplicationRunner、CommandLineRunner 接口来启动
    你的 handler 也要设成组件并通过注入来初始化
    nutting
        10
    nutting  
       2019-06-27 18:27:48 +08:00
    用 spring 你就都得 spring 接管对象才能依赖
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4557 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 01:07 PVG 09:07 LAX 17:07 JFK 20:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86