在写TCP通信的时候,需要在netty的回调里进行数据库操作,这时候就需要service
但是不注入的话他会报空指针。
所以可以用以前方法来处理
先创建一个springUtils工具类用来从Context中获取bean
@Component
public class SpringUtils implements ApplicationContextAware {
private static ApplicationContext applicationContext = null;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if(SpringUtils.applicationContext == null){
SpringUtils.applicationContext = applicationContext;
}
}
//获取applicationContext
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
//通过name获取 Bean.
public static Object getBean(String name){
return getApplicationContext().getBean(name);
}
//通过class获取Bean.
public static <T> T getBean(Class<T> clazz){
return getApplicationContext().getBean(clazz);
}
//通过name,以及Clazz返回指定的Bean
public static <T> T getBean(String name,Class<T> clazz){
return getApplicationContext().getBean(name, clazz);
}
然后再在需要的地方getbean就行
然后就可以调用service里面的方法了
@Autowired
TerminalService service = SpringUtils.getApplicationContext().getBean(TerminalService.class);
equNum = service.selectEqui(sbid);