cxp
V2EX  ›  Java

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

  •  
  •   cxp · Nov 21, 2018 · 3575 views
    This topic created in 2747 days ago, the information mentioned may be changed or developed.

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

    6 replies    2018-11-22 09:22:54 +08:00
    ffkjjj
        1
    ffkjjj  
       Nov 21, 2018
    获取 ApplicationContext, 通过 ApplicationContext 中的 getBean() 方法,
    cxp
        2
    cxp  
    OP
       Nov 21, 2018
    具体在那获取呢?是主线程获取,然后传参给收信息线程呢,还是直接在收信息线程获取?谢谢
    sakudie
        3
    sakudie  
       Nov 21, 2018
    在 ServletContextListener 实现类上 加一个 @Compont 注解。
    cxp
        4
    cxp  
    OP
       Nov 21, 2018
    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  
       Nov 22, 2018 via Android
    你这个 context listener 加载完成的时候 Spring 都没开始加载吧?
    Antihank
        6
    Antihank  
       Nov 22, 2018
    @Service 不是加在这里的呀
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1671 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 16:20 · PVG 00:20 · LAX 09:20 · JFK 12:20
    ♥ Do have faith in what you're doing.