springboot在普通类中使用service

在写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);

猜你喜欢

转载自blog.csdn.net/qq_41755287/article/details/86491387