Spring boot针对使用@Autowired和@Resource注入失败的解决方案

场景:一个月黑风高的晚上,我立下flag,做完这个功能就睡觉,结果就一直卡在了Service实现类中注入的Repository为空的问题,因为没有使用xml文件配置,导致也不知道从何下手,在网上查找的方法也不管用,比如检查注解是否完全、,我们下面直接来解决

一般来说,你要保证注入的对象在Spring的管理池中,怎么确定呢?

一般在对应类上加上注解即可

有关Service的实现类:@Service

有关Controller的实现类:@Controller

有关Repository的接口或类:@Repository

还有一些@Component、@Configuration、@Bean等一些注解,具体的可以将这些类交给Spring来帮我们管理

我们先来看看问题
在这里插入图片描述
注入的对象为null???不能理解
在这里插入图片描述

但是我这些注解都配置好了啊,那怎么办呢?

最后我的解决方案就是在配置类文件夹中新建一个类ApplicationContextAwareGetBean.class来实现ApplicationContextAware接口,重写接口中的方法

直接上代码

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class ApplicationContextAwareGetBean implements ApplicationContextAware {
    private static ApplicationContext applicationContext;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.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);
    }
}

我最终就通过这个配置类来获取我们想要的bean对象

然后在想要注入的类中直接调用即可
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉淀顶峰相见的PET

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值