spring注入普通java类_springboot项目在普通Java类(非controller或者service类)注入@Autowired引用service类的方法...

在使用 SpringBoot 框架开发过程中,一些工具类、静态非Controller 类需要调用由Spring 管理的Service 层类;如果直接使用@Autowired注解引用Service类的方法,会报 null 异常。这是因为工具类创建过程中,不能使用@Autowired注解引用Service类的方法。

一、解决方法

package com.bootdo.publicOrder.utils;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Configuration;

import com.bootdo.publicOrder.domain.OrderInfoCom;

import com.bootdo.publicOrder.domain.OrderReturnInfoCom;

import com.bootdo.publicOrder.service.OrderInfoService;

@Configuration //将工具类声明为Spring组件;也可以使用 Component 等

public class PublicMiddleUtil {

@Autowired

private OrderInfoService orderService;

//静态初始化当前类

public static PublicMiddleUtil middleUtil;

//在方法上加 PostConstruct 注解;方法会在Bean 初始化之后被Spring 容器执行。

//Bean 初始化包括:实例化Bean、装配Bean的属性(依赖注入)

//在初始化的时候初始化静态对象和它的静态成员变量bean对象,静态存储下来,防止被释放

@PostConstruct

public void init() {

middleUtil = this;

middleUtil.orderService = this.orderService;

}

public static OrderReturnInfoCom middleEntrance(OrderInfoCom f) {

return new PublicMiddleUtil().orderEntrance(f);

}

public OrderReturnInfoCom orderEntrance(OrderInfoCom f) {

OrderReturnInfoCom result = new OrderReturnInfoCom();

if (null!=f) {

......

if("queryProductsList".equals(f.getMethod())) {

result = middleUtil.orderService.queryOrderProducts(f); //注入的属性,使用静态对象调用

}

}

return result;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值