Примечание. Используйте static для определения метода внедрения или переменной значения файла конфигурации, во время компиляции не будет исключений, а во время выполнения будет сообщаться нулевой указатель.
Весенние чиновники не рекомендуют этот метод.
принцип:
https://www.cnblogs.com/chenfeng1122/p/6270217.html
Решение
Используйте метод вставки набора Spring для вставки статических переменных через нестатические методы установки.Мы можем изменить его, чтобы статические переменные могли получать информацию, которую вы настроили.
Удалите модификатор static методов get и set, а затем добавьте @Autowired к методу set.
/** 阿里云OSS配置查询 */
private static OSSConfMapper ossConfMapper;
/** 阿里云OSS图片上传 */
private static UploadImgOSS uploadImgOSS;
public OSSConfMapper getOssConfMapper() {
return ossConfMapper;
}
@Autowired
public void setOssConfMapper(OSSConfMapper ossConfMapper) {
UploadUtil.ossConfMapper = ossConfMapper;
}
public UploadImgOSS getUploadImgOSS() {
return uploadImgOSS;
}
@Autowired
public void setUploadImgOSS(UploadImgOSS uploadImgOSS) {
UploadUtil.uploadImgOSS = uploadImgOSS;
}
Справочные документы
https://blog.csdn.net/kongrun12/article/details/76246369
https://blog.csdn.net/zxl646801924/article/details/81738231
https://blog.csdn.net/u014079773/article/details/66973830
Попробовав, есть два способа добиться
Метод 1. Объявите статическую переменную или метод, а затем вставьте соответствующую переменную и метод соответственно.Наконец, в init реализована аннотация PostConstruct.
код показать, как показано ниже
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
import tylin.paas.transfers.util.DateUtil;
import javax.annotation.PostConstruct;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
@Slf4j
@Component
public class ErrorHandler {
@Value("${customer.mail.bankMail.sender}")
private String configSender;
private static String sender;
@Value("${customer.mail.bankMail.receiver}")
private String configReceiver;
private static String receiver;
public static ErrorHandler errorHandler;
@Autowired
JavaMailSender autoJavaMailSender;
private static JavaMailSender javaMailSender;
@PostConstruct
public void init() {
sender = configSender;
receiver = configReceiver;
javaMailSender = autoJavaMailSender;
errorHandler = this;
}
public static void sendMail() {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(sender);
message.setTo(receiver.split(";"));
message.setSubject("your subject");
message.setText("your content text");
try {
javaMailSender.send(message);
log.info("发送邮件成功!");
} catch (Exception e) {
log.error("发送邮件时发生异常!", e);
}
}
}
Метод 2: (Возможен Pro-тест)
Ввести во время набора
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
import org.springframework.test.context.junit4.SpringRunner;
import org.tylin.TylinERPApplication;
import java.text.SimpleDateFormat;
import java.util.Date;
@Slf4j
@Component
@SpringBootTest(classes = TylinERPApplication.class)
@RunWith(SpringRunner.class)
public class MailAutoSendTest {
private static String sender;
//可以不要
public String getSender() {
return sender;
}
@Value("${customer.mail.bankMail.sender}")
public void setSender(String sender) {
MailAutoSendTest.sender = sender;
}
private static String receiver;
//可以不要
public String getReceiver() {
return receiver;
}
@Value("${customer.mail.bankMail.receiver}")
public void setReceiver(String receiver) {
MailAutoSendTest.receiver = receiver;
}
private static JavaMailSender javaMailSender;
public JavaMailSender getJavaMailSender(){
return javaMailSender;
}
@Autowired
public void setJavaMailSender(JavaMailSender javaMailSender){
MailAutoSendTest.javaMailSender = javaMailSender;
}
@Test
public void sendMail() {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(sender);
log.info(sender);
log.info(receiver);
message.setTo(receiver.split(";"));
message.setSubject("xxxx");
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
message.setText("xxxx"+dateFormat.format(date));
try {
javaMailSender.send(message);
log.info("简单邮件已经发送。");
} catch (Exception e) {
log.error("发送简单邮件时发生异常!", e);
}
}
}
Пример профессионального теста:
@Component
public class NetEleUtil {
private static WirelessResourceProperties resProps;
public WirelessResourceProperties getResProps() {
return resProps;
}
// @Autowired
public void setResProps(WirelessResourceProperties resProps) {
NetEleUtil.resProps = resProps;
}
/**
* 根据网元英文简称获取网元中文名称
*
* @param obj
* @return java.util.Map<java.lang.String,java.lang.Object>
* @author liangzhaolin
* @date 2020/10/22 11:00
*/
public static String getNetEleTableCnName(String netEleType) {
Map<String, String> tableMap = resProps.getTableCnName();
String netEleTableCnName = tableMap.get(netEleType);
return netEleTableCnName;
}
}