Spring Boot Service注入為null mapper注入為null @Component注解下@Value獲取不到值 WebsocketServer類里無法注入service


最近搞了一下websocket前台(這個網上有很多的教程這里就不班門弄斧啦) 以及前后台的交互 和后台的bug(搞了兩天) 也是狀態頻發 bug不斷 下面說一說問題

Websocket主類里面無法注入Service 從而導致Service里Mapper也注入為null  具體原因的還是因為websocket主類里的一個

@Component 的注解 他的作用呢就是實例化 但是他是項目啟動時就實例化的 這樣 后續的注入就會注入不進去 后來自作聰明在主類里new的一個service 進去是進去了

但是在service進mapper的時候 mapper又注入不進去了 這次注入不進去的原因就是因為你這個service是new出來的所以無法注入 還是要從根本上及決問題啊;;;

    
@component (把普通pojo實例化到spring容器中,相當於配置文件中的 
<bean id="" class=""/>)

泛指各種組件,就是說當我們的類不屬於各種歸類的時候(不屬於@Controller、@Services等的時候),我們就可以使用@Component來標注這個類。

案例: 
<context:component-scan base-package=”com.*”> 
上面的這個例子是引入Component組件的例子,其中base-package表示為需要掃描的所有子包。 
共同點:被@controller 、@service、@repository 、@component 注解的類,都會把這些類納入進spring容器中進行管理  
 
        

  解決方案: 注入不進去的根本原因還在於是加載主類的時候沒有實例化到service 所以我們在Application 啟動類里加入ConfigurableApplicationContext

   下面附上application、websocket上的代碼供大家參考:
Application:
public static void main(String[] args) {
	SpringApplication springApplication = new SpringApplication(WebsocketApplication.class);
	ConfigurableApplicationContext configurableApplicationContext = springApplication.run(args);
	WebsocketServer.setApplicationContext(configurableApplicationContext);
}
 
        

  WebsocketServer:

  

    @Autowired
    private WebsocketService websocketService;

    private static ApplicationContext applicationContext;

    public static void setApplicationContext(ApplicationContext applicationContext){
        WebsocketServer.applicationContext = applicationContext;
    }

    //需要用到service的方法內
    websocketService=applicationContext.getBean(WebsocketService.class);
    

  

之后就是@Value注解在本WebsocketServer類里獲取不到我在application.yml里配置的值 試了好多方法都不行(后來在ServiceImpl類里獲取的值) 
哪位大佬有解決辦法可以共享一下將感激不盡




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM