在 SpringBoot 的使用中,通常想获取 application.properties 里的值,有三种方法。其中最简便的就是使用注解 @Value().
通过下面这个例子就能能很好理解
application.properties
MailService.java
但是今天在另一个类中使用时,@Value 一直无法获得值,总是 null。
经过一番百度搜索,找到了解决答案。
来自 CSDN 论坛 http://bbs.csdn.net/topics/390936459#post-400897178 ,32楼
后来在 Stack Overflow 也看到了类似的回答
https://stackoverflow.com/questions/39047333/spring-boot-value-properties
本文地址:https://liuyanzhao.com/7602.html
通过下面这个例子就能能很好理解
application.properties
- #qq企业邮箱
- spring.mail.host=smtp.exmail.qq.com
- spring.mail.username=master@liuyanzhao.com
- spring.mail.password=密码
MailService.java
- package com.liuyanzhao.chuyun.service;
- import ch.qos.logback.classic.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.core.io.FileSystemResource;
- import org.springframework.mail.SimpleMailMessage;
- import org.springframework.mail.javamail.JavaMailSender;
- import org.springframework.mail.javamail.MimeMessageHelper;
- import org.springframework.stereotype.Service;
- import javax.mail.MessagingException;
- import javax.mail.internet.MimeMessage;
- import java.io.File;
- /**
- * @author 言曌
- * @date 2018/2/6 下午8:25
- */
- @Service
- public class MailService {
- private final Logger logger = (Logger) LoggerFactory.getLogger(this.getClass());
- @Autowired
- private JavaMailSender sender;
- @Value("${spring.mail.username}")
- private String from;
- /**
- * 发送纯文本的简单邮件
- *
- * @param to
- * @param subject
- * @param content
- */
- public void sendSimpleMail(String to, String subject, String content) {
- SimpleMailMessage message = new SimpleMailMessage();
- message.setFrom(from);
- message.setTo(to);
- message.setSubject(subject);
- message.setText(content);
- try {
- sender.send(message);
- logger.info("简单邮件已经发送。");
- } catch (Exception e) {
- logger.error("发送简单邮件时发生异常!", e);
- }
- }
- }
但是今天在另一个类中使用时,@Value 一直无法获得值,总是 null。
经过一番百度搜索,找到了解决答案。
来自 CSDN 论坛 http://bbs.csdn.net/topics/390936459#post-400897178 ,32楼
我也遇到了这个问题,后来解决了,原因是如果有注入bean的那个类,在被其他类作为对象引用的话(被调用)。这个被调用的类也必须选择注解的方式,注入到调用他的那个类中,不能用 new出来做对象,new出来的对象再注入其他bean就会 发生获取不到的现象。所以要被调用的javabean,都需要@service,交给Spring去管理才可以,这样他就默认注入了。
后来在 Stack Overflow 也看到了类似的回答
https://stackoverflow.com/questions/39047333/spring-boot-value-properties
本文地址:https://liuyanzhao.com/7602.html
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏