• 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类里获取的值) 
    哪位大佬有解决办法可以共享一下将感激不尽




  • 相关阅读:
    elemenui数据表格加入计数器和输入框
    递归求阶乘
    递归累和
    递归
    file类
    Object类
    首页背景图
    异常的处理
    数据结构有什么用?常见的数据结构有什么?
    线程、并发、并行、进程是什么,以及如何开启新的线程?
  • 原文地址:https://www.cnblogs.com/yangchengdebokeyuan/p/10621788.html
Copyright © 2020-2023  润新知