1. 程式人生 > 其它 >spring無法自動注入靜態變數、spring注入null 的解決方法;

spring無法自動注入靜態變數、spring注入null 的解決方法;

技術標籤:springjavajavaspring

方式一:使用@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;
    }

}