当前位置:   article > 正文

在静态方法中使用Spring或Spring Boot自动注入的属性_springboot 静态类注入

springboot 静态类注入

静态方法是属于类的,而普通方法则属于对象,spring注入只在容器中实例化变量的,并且静态是优先于对象存在的,所以直接在静态方法中调用注入的静态变量其实是null的。要想在静态方法中使用注入的属性有两种方式。

  1. //1 使用@Autowired注解加到构造函数的方式
  2. public class QueryMgtUtils {
  3. private static QuerySuperviseRemoteService querySuperviseRemoteService;
  4. @Autowired
  5. public QueryMgtUtils(QuerySuperviseRemoteService querySuperviseRemoteService) {
  6. QueryMgtUtils.querySuperviseRemoteService = querySuperviseRemoteService;
  7. }
  8. public static List<ExecutionUnitReqDTO> getMgtOrg() {
  9. return querySuperviseRemoteService.getUnitList(new ExecutionUnitReqDTO());
  10. }
  11. }
  12. // 第二种方式使用 @PostConstruct注解,@PostConstruct在构造函数之后执行,init()方法之前执行。
  13. public class MgtOrgUtil {
  14. private static MgtOrgService mgtOrg;
  15. @Resource
  16. private MgtOrgService mgtOrgService;
  17. @PostConstruct
  18. private void init() {
  19. mgtOrg = this.mgtOrgService;
  20. }
  21. public static boolean checkIsLocal(String mgtOrgCode, String distLv) {
  22. MgtOrgBO bo = new MgtOrgBO();
  23. bo.setDistLv(distLv);
  24. bo.setMgtOrgCode(mgtOrgCode);
  25. List<MgtOrgBO> list = mgtOrg.queryMgtOrg(bo);
  26. for(MgtOrgBO mgtOrgBO: list) {
  27. if(mgtOrgBO.getDistLv().equals(distLv) && mgtOrgBO.getVirtualFlag() == 1 ) {
  28. return true;
  29. }
  30. }
  31. return false;
  32. }
  33. }

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号