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); } }
// 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; } }
加上注解解决