Note: The static method to define an injected or variable profile values, there will be no exceptions when you compile, will be reported null pointer at runtime.
Spring officially does not recommend this method.
principle:
https://www.cnblogs.com/chenfeng1122/p/6270217.html
Solution
Injection method using the set of spring, injected through a static non-static variable setter methods, we can change so that you can get to a static variable configuration of the information you.
To get, set of methods to remove static modifier and then added to the set method above @Autowired
/ ** * Ali cloud OSS configure the query / private static OSSConfMapper ossConfMapper; / ** * Ali cloud OSS picture upload / 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; }
Reference Documents
https://blog.csdn.net/kongrun12/article/details/76246369
https://blog.csdn.net/zxl646801924/article/details/81738231
https://blog.csdn.net/u014079773/article/details/66973830
After attempts, there are two implementations
One way: declare a static variable or method, and then injected into a corresponding variable and corresponding method, implemented at the last comment PostConstruct init.
code show as below
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; java.util.LinkedList import; 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 ( "send mail success!"); } catch (Exception e) { log.error ( "exception occurs when sending messages!", e); } } }
Second way:
When injected into the set
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; //Can not public String getSender() { return sender; } @Value("${customer.mail.bankMail.sender}") Void public setSender (String sender) { MailAutoSendTest.sender = runs; } private static String receiver; //Can not 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 ( "simple message has been sent."); } catch (Exception e) { log.error ( "exception occurs while sending a Simple Mail!", e); } } }
Note: The static method to define an injected or variable profile values, there will be no exceptions when you compile, will be reported null pointer at runtime.
Spring officially does not recommend this method.
principle:
https://www.cnblogs.com/chenfeng1122/p/6270217.html
Solution
Injection method using the set of spring, injected through a static non-static variable setter methods, we can change so that you can get to a static variable configuration of the information you.
To get, set of methods to remove static modifier and then added to the set method above @Autowired
/ ** * Ali cloud OSS configure the query / private static OSSConfMapper ossConfMapper; / ** * Ali cloud OSS picture upload / 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; }
Reference Documents
https://blog.csdn.net/kongrun12/article/details/76246369
https://blog.csdn.net/zxl646801924/article/details/81738231
https://blog.csdn.net/u014079773/article/details/66973830
After attempts, there are two implementations
One way: declare a static variable or method, and then injected into a corresponding variable and corresponding method, implemented at the last comment PostConstruct init.
code show as below
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; java.util.LinkedList import; 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 ( "send mail success!"); } catch (Exception e) { log.error ( "exception occurs when sending messages!", e); } } }
Second way:
When injected into the set
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; //Can not public String getSender() { return sender; } @Value("${customer.mail.bankMail.sender}") Void public setSender (String sender) { MailAutoSendTest.sender = runs; } private static String receiver; //Can not 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 ( "simple message has been sent."); } catch (Exception e) { log.error ( "exception occurs while sending a Simple Mail!", e); } } }