对对对~

Spring-bootz开发中util类缺少注解@Component引起空指针

 

 util工具类

package com.javasm.boot.common.utils;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * @Author:liulei
 * @Version:1.0
 * @Date:2022/3/8-15:53
 * @Since:jdk1.8
 * @Description:
 */

//这个类可以看做是spring容器。可以利用这个类,从Spring容器中获取对象

public class SpringContainerUtils implements ApplicationContextAware {
    //静态的,全局的Spring容器
    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext1) throws BeansException {
          applicationContext =applicationContext1;
    }

    public static <T> T  getBean(Class<T> clazz){
       return applicationContext.getBean(clazz);
    }
}
View Code
// AsyncFactory 这个类的含义是异步工厂,这里要执行的方法是比较耗时的操作比如发邮件,需要多线程去执行的
public class AsyncFactory {

//    @Autowired
//    private static JavaMailSender javaMailSender;

    public static Runnable sendEmail(String email,String context){

        Runnable runnable=()->{
//            System.out.println("sendEmail Thread--->"+Thread.currentThread().getName());
            JavaMailSender javaMailSender = SpringContainerUtils.getBean(JavaMailSender.class);
            SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
            simpleMailMessage.setFrom("文杰<wenjie__email@163.com>");
            simpleMailMessage.setSubject("验证码");
            simpleMailMessage.setText(context);
            simpleMailMessage.setTo(email);
            javaMailSender.send(simpleMailMessage);
        };

        return runnable;
    }
}
View Code

 加上注解解决

 

posted on 2022-03-10 18:02  NOMA~  阅读(73)  评论(0编辑  收藏  举报

导航