V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cxp
V2EX  ›  Java

在线程中无法通过注入的方式获取 service,亟待解决。

  •  
  •   cxp · 2018-11-21 18:29:21 +08:00 · 2530 次点击
    这是一个创建于 1981 天前的主题,其中的信息可能已经有所发展或是发生改变。

    解释如下:(有人解决过再发代码)
    1、一个主线程实现 ServletContextListener,保证这个线程同 web 生命周期。
    2、当有人通过 tcp 连接我的端口时,分出接收信息线程和发送信息线程。
    3、此时,我收到数据需要将特定数据插入数据库。
    我的做法:
    在收信息线程中注入 Service,通过 service 去保存。--出现 java.lang.NullPointerException
    其他方法还在寻找中。。。
    或者有其他想法能够让 spring 完全管理也行。谢谢

    6 条回复    2018-11-22 09:22:54 +08:00
    ffkjjj
        1
    ffkjjj  
       2018-11-21 19:11:09 +08:00
    获取 ApplicationContext, 通过 ApplicationContext 中的 getBean() 方法,
    cxp
        2
    cxp  
    OP
       2018-11-21 20:36:10 +08:00
    具体在那获取呢?是主线程获取,然后传参给收信息线程呢,还是直接在收信息线程获取?谢谢
    sakudie
        3
    sakudie  
       2018-11-21 20:41:12 +08:00
    在 ServletContextListener 实现类上 加一个 @Compont 注解。
    cxp
        4
    cxp  
    OP
       2018-11-21 20:45:33 +08:00
    private ApplicationContext applicationContext;
    DaysService daysService = (DaysService) applicationContext.getBean("daysService");
    首先,
    @Service
    @Autowired
    private DaysService daysService;
    报错:
    No qualifying bean of type 'java.net.Socket' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
    Aruforce
        5
    Aruforce  
       2018-11-22 08:55:56 +08:00 via Android
    你这个 context listener 加载完成的时候 Spring 都没开始加载吧?
    Antihank
        6
    Antihank  
       2018-11-22 09:22:54 +08:00
    @Service 不是加在这里的呀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1559 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:10 · PVG 01:10 · LAX 10:10 · JFK 13:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.