spring無法自動注入靜態變數、spring注入null 的解決方法;
阿新 • • 發佈:2021-01-26
方式一:使用@Resource註解set方法,將注入的bean物件賦值給靜態變數。
/** * @description: 自定義公共方法 * @author: H2103424 * @createTime: 2021/1/22 下午 02:15 **/ @Component public class CustomUtil { private static UserService userService; private static MailSendService mailSendService; @Resource public void setMailSendService(MailSendService mailSendService) { CustomUtil.mailSendService = mailSendService; } @Resource public void setUserService(UserService userService) { CustomUtil.userService = userService; } /** * @description: 根據 使用者編號list 獲取使用者郵箱list * @author: H2103424 * @dateTime: 2021/1/22 下午 03:06 * * @param users 使用者編號集合 * @return 使用者郵箱集合 */ public static List<String> getEmailsByUsers(List<Object> users){ List<Map<String,Object>> userInfos = userService.getUserByUserNo(users); List<String> userEmails = new ArrayList<>(); userInfos.forEach(u -> { userEmails.add((String) u.get("user_email")); }); return userEmails; } }
方法二:使用@Resource自動注入普通變數,然後使用@PostConstruct註解將普通變數賦值給靜態變數。
@PostConstruct註解說明請參見:https://blog.csdn.net/qq360694660/article/details/82877222
/** * @description: 自定義公共方法 * @author: H2103424 * @createTime: 2021/1/22 下午 02:15 **/ @Component public class CustomUtil { @Resource private UserService userServiceBean; @Resource private MailSendService mailSendServiceBean; private static UserService userService; private static MailSendService mailSendService; @PostConstruct public void init(){ userService = userServiceBean; mailSendService = mailSendServiceBean; } /** * @description: 根據 使用者編號list 獲取使用者郵箱list * @author: H2103424 * @dateTime: 2021/1/22 下午 03:06 * * @param users 使用者編號集合 * @return 使用者郵箱集合 */ public static List<String> getEmailsByUsers(List<Object> users){ List<Map<String,Object>> userInfos = userService.getUserByUserNo(users); List<String> userEmails = new ArrayList<>(); userInfos.forEach(u -> { userEmails.add((String) u.get("user_email")); }); return userEmails; } }