博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot 项目中在普通类中调用dao层的mapper 出现空指针异常
阅读量:3934 次
发布时间:2019-05-23

本文共 3907 字,大约阅读时间需要 13 分钟。

项目中我遇到同样的问题 特记载一下

有两种方式

 

一、

该类使用@Component注解

添加一个本类类型的静态字段

创建一个初始化方法,贴上@PostConstruct 标签,用于注入bean

创建方法调用mapper或service接口

最后直接在普通类中调用即可

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

 被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。

个人理解就是mapper 装载失败 重点init()方法中转了一次

@Componentpublic class TestUtil {    @Autowired    private DoctorInformationMapper doctorInformationMapper;    public static TestUtil testUtil;    @PostConstruct    public void init() {        testUtil = this;        testUtil.doctorInformationMapper = this.doctorInformationMapper;    }    //调用    public static int getOpenId() {        int count = testUtil.doctorInformationMapper.count("12313");        return count;    }    }

 

二。通过spring 容器去拿

2.1首先打印出Spring容器所有的Bean名称

@Componentpublic class ApplicationContextBean implements ApplicationContextAware, InitializingBean {    public static ApplicationContext applicationContext;    /**     * 获取 ApplicationContext     *     * @param applicationContext     * @throws BeansException     */    @Override    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {        ApplicationContextBean.applicationContext = applicationContext;    }    /**     * 打印IOC容器中所有的Bean名称     *     * @throws Exception     */    @Override    public void afterPropertiesSet() throws Exception {        String[] names = applicationContext.getBeanDefinitionNames();        for (String name : names) {            System.out.println(">>>>>>" + name);        }       System.out.println("------\nBean 总计:" + applicationContext.getBeanDefinitionCount());    }}

不用调用测试,项目启动就会在后台打印出来

 

2.2开始写获取bean工具类

@Componentpublic class SpringUtil implements ApplicationContextAware {    private static ApplicationContext applicationContext = null;    public SpringUtil() {    }    public void setApplicationContext(ApplicationContext arg0) throws BeansException {        if (applicationContext == null) {            applicationContext = arg0;        }    }    public static ApplicationContext getApplicationContext() {        return applicationContext;    }    public static void setAppCtx(ApplicationContext webAppCtx) {        if (webAppCtx != null) {            applicationContext = webAppCtx;        }    }    /**     * 拿到ApplicationContext对象实例后就可以手动获取Bean的注入实例对象     */    public static 
T getBean(Class
clazz) { return getApplicationContext().getBean(clazz); } public static
T getBean(String name, Class
clazz) throws ClassNotFoundException { return getApplicationContext().getBean(name, clazz); } public static final Object getBean(String beanName) { return getApplicationContext().getBean(beanName); } public static final Object getBean(String beanName, String className) throws ClassNotFoundException { Class clz = Class.forName(className); return getApplicationContext().getBean(beanName, clz.getClass()); } public static boolean containsBean(String name) { return getApplicationContext().containsBean(name); } public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException { return getApplicationContext().isSingleton(name); } public static Class
getType(String name) throws NoSuchBeanDefinitionException { return getApplicationContext().getType(name); } public static String[] getAliases(String name) throws NoSuchBeanDefinitionException { return getApplicationContext().getAliases(name); }  //测试 public static String getCharId(String chatId) { ChatListAssociationMapper associationMapper = (ChatListAssociationMapper) SpringUtil.getBean("chatListAssociationMapper");//这个参数是spring容器里存在的,名字最好复制,大小写要一致,不然会失败 return associationMapper.chatId(chatId); }}

 

注意以上的两种方法都不能在main方法调用,会报空指针异常

转载地址:http://hlhgn.baihongyu.com/

你可能感兴趣的文章
信息系统安全风险识别与评估
查看>>
信息安全系统的组织管理
查看>>
项目时间管理脉络
查看>>
项目成本管理脉络
查看>>
项目质量管理脉络
查看>>
项目人力资源管理脉络
查看>>
项目沟通管理脉络
查看>>
项目风险管理脉络
查看>>
项目采购管理脉络
查看>>
项目管理总结
查看>>
java内存区域的分布
查看>>
Java跨平台的构思分析
查看>>
linux目录结构名称对照
查看>>
设计的理念
查看>>
多线程专题 - 脉络图
查看>>
javascript 函数,BOM
查看>>
javascript 客户端能力检测
查看>>
javascript DOM详解之DOM1
查看>>
javascript DOM扩展
查看>>
矛盾论读书笔记
查看>>