解决springboot关于@Autowired注入为null的问题

本文深入探讨了Spring框架中依赖注入的正确使用方法,对比了直接new对象与利用构造器注入的区别,强调了@Component注解在类上的作用,并通过具体示例展示了如何在工具类和Controller类中正确使用@Autowired注解来获取Service类实例,避免了因注入失败导致的空指针异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有些类不是controller在使用autowired注入的service类显示为null

  • 完美解决
  • 没有new

  • ps 使用@ConfigurationProperties(prefix = “xxxx”)时,在工具类例如 UserUtils 类封装方法,在RestController 类中 调用

//示例
@Component
public class DemoUtil{
    @Autowired
    private DemoPro demoPro; //@ConfigurationProperties(prefix = "xxxx") 读取Bean类

	public demo getDemo(){
	 String demothree = "123"
	  return demoTwoFun(demoPro.getBase64, demothree)
	}
 }
//错误示例
@RestController
public class Demo{
	@GetMapping("/getDemo")
	public demo getDemo(){
	  return new DemoUtil().getDemo()
	}
}
//——————————————————————————————分割线————————————————————————————————
//成功读取示例
@RestController
public class Demo{
	@Autowired
	private DemoUtil demoUtil;
	@GetMapping("/getDemo")
	public demo getDemo(){
	  return demoUtil.getDemo()
	}
}
//*******************工具 类*******************
@Component
public class DemoUtil{
    @Autowired
    private DemoMapper demoMpper;

	public demo getDemo(){
	  QueryWarpper query = new QueryWarpper<>();
	  query.eq("id",1)
	  return demoMpper.selectOne(query)
	}
 }
//*******************controller 类*******************

@RestController
public class Demo{
	@Autowired
	private DemoUtil demoUtil;
	@RequestMapping(value = "/getDemo", method = RequestMethod.POST)
	public demo getDemo(){
	  return demoUtil.getDemo()
	}
}
  • 第一种解决方式
@Component
public class ProductInstLogic {
    @Autowired
    private InstImpl instImpl;
    
    private static ProductInstLogic pil ;
    @PostConstruct //通过@PostConstruct实现初始化bean之前进行的操作
    public void init() {
        pil = this;
        pil.InstImpl = this.instImpl;
        pil.ProductInstImpl = this.ProductInstImpl;
        // 初使化时将已静态化的testService实例化
    }
 }
  • 第二种解决方式
@Component
public class ProductInstLogic {
    @Autowired
    // @Resource
    private InstMapper InstMapper;
}
@Component
public class TimingAuto {
    @Autowired
    private ProductInstLogic productInstLogic;
    
    @Scheduled(cron = "0/10 * * * * ?") //10秒执行一次
    public void productInstSocket() {
       	productInstLogic.ProductInstAll();
    }
    
}
@RestController
public class ProductInstController {
    @Autowired
    private ProductInstLogic productInstLogic;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值