当前位置: 代码迷 >> 综合 >> SpringBoot中Filter/Handler 中注入service或者Mapper为null解决方案
  详细解决方案

SpringBoot中Filter/Handler 中注入service或者Mapper为null解决方案

热度:68   发布时间:2023-10-18 18:53:19.0

今天碰到一个问题,搞了多半天才找到解决方案,项目中写了个Handler处理器来处理数据的同时还需要和数据库交互查数据,但是在Handler中通过@Autowired注入和数据库交互的Mapper时报错null,通过在Handler上加@Component配置扫描还是不好用仍旧是null。

后来在网上查到一个解决办法,那就是通过手动获取bean的方式(ApplicationContext)

写了个工具类代码如下:

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;@Component("springContextUtils")
public class SpringContextUtils implements ApplicationContextAware {/*** Spring应用上下文环境*/private static ApplicationContext applicationContext;/*** 实现ApplicationContextAware接口的回调方法,设置上下文环境** @param applicationContext*/public void setApplicationContext(ApplicationContext applicationContext) {SpringContextUtils.applicationContext = applicationContext;}/*** @return ApplicationContext*/public static ApplicationContext getApplicationContext() {return applicationContext;}/*** 获取对象** @param name* @return Object* @throws BeansException*/public static Object getBean(String name) throws BeansException {return applicationContext.getBean(name);}/*** 根据class获取对应的bean对象* @param clz* @return*/public static Object getBean(Class<?> clz){return applicationContext.getBean(clz);}
}

  相关解决方案