首先目前我写的项目是springboot+netty,在接收客户端传输的数据时调用service一直报null指针异常
刚开始没有想到是service无法实例化的问题,一直在测试数据方面的问题,后来去群里讨论才知道问题所在
我这里讲的netty接收数据的handler类,但是基本都大同小异
如果我们直接在一个不是controller类的里面注入@Autowired的时候,而且还去调用就会报null指针


像这样如果直接调用的话就会报错
下面来说怎么解决
首先需要了解两个注解 @Component 跟 @PostConstruct
spring注解中@component就是说把这个类交给Spring管理, 因为不清楚这个类是属于哪个层面,所以就用@Component。
@PostContruct是spring框架的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。

如上图所示 加上关键步骤,之后通过下图调用,调用service就不会报null了

这样就解决了无法实例化service的问题。
@Value注解取不到值,比如GameServerHandler中有如下属性,但是使用value注解注入不进去,只能通过GameServerHandler.name去取值
@Value(${server.name})
private String name;

本文介绍了在SpringBoot项目中结合Netty处理客户端数据时遇到的Service注入问题。当直接在非Controller类中使用@Autowired注解调用Service时,会遇到null指针异常。解决方案是利用@Component和@PostConstruct注解,确保在Spring容器初始化时执行方法,从而正确实例化Service。同时,@Value注解在某些情况下可能无法正常注入配置属性,需要通过其他方式获取。
&spm=1001.2101.3001.5002&articleId=115248772&d=1&t=3&u=5a87aedd030c4a299dd17bc0433c68e6)
1125

被折叠的 条评论
为什么被折叠?



