当前位置: 首页 > 知识库问答 >
问题:

无法在Spring Boot[重复]中使用@value注释

常鸿朗
2023-03-14

我有课

@Component
@Configuration
public class EmailSender {

    private Properties properties;
    @Value("#{mail.smtp.starttls.enable}") private String startTls;
    @Value("#{mail.transport.protocol}") private String protocol;
    @Value("#{mail.smtp.auth}") private String auth;
    @Value("#{mail.smtp.host}") private String host;
    @Value("#{mail.user}") private String user;
    @Value("#{mail.password}") private String password;
   ...
}

以及application.properties中的以下属性

# Email Credentials
mail.user                   = someone@somewhere.com
mail.password               = mypassword

# Sending Email
mail.smtp.host              = smtp.gmail.com
mail.from                   = someone@somewhere.com
mail.smtp.starttls.enable   = true
mail.transport.protocol     = smtp
mail.smtp.auth          = true
mail.subject            = my subject...
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'emailSender': Unsatisfied dependency expressed through field 'startTls'; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'mail' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public?

如何使用@value读取这些属性?

老实说,我试过很多次使用@value,但始终无法完全得到它。

共有1个答案

冯胤
2023-03-14

使用$代替#

@Component
@Configuration
public class EmailSender {

    private Properties properties;
    @Value("${mail.smtp.starttls.enable}") private String startTls;
    @Value("${mail.transport.protocol}") private String protocol;
    @Value("${mail.smtp.auth}") private String auth;
    @Value("${mail.smtp.host}") private String host;
    @Value("${mail.user}") private String user;
    @Value("${mail.password}") private String password;
   ...
}
 类似资料:
  • 本文向大家介绍Springboot中@Value的使用详解,包括了Springboot中@Value的使用详解的使用技巧和注意事项,需要的朋友参考一下 Springboot通过@Value注解将配置文件中的属性注入到容器内组件中(可用在@Controller、@Service、@Configuration、@Component等Spring托管的类中)  1.普通字符串注入 例:yml中存在key

  • 我尝试在具有Runnable的类中使用通过实例化的对象实例,但我得到了 我经历了这一过程,但我尝试的所有解决方案仍然是相同的问题。 共享我的代码: 我把这个类称为其他类的可运行类 < code>executor.submit(新的MyClass("abc "," def ")。newRunnable()); 那么,我是不是做错了什么,或者有什么方法可以让我使用这个对象

  • 应用.yml build.gradle: 错误: 知道我错过了什么吗? 我试图从yml文件中删除:driverClassName: org.h2.Driver。不工作。 尝试将build.gradle和版本修改为H2..也不起作用。

  • 我试图在我的ksh程序的curl命令中使用两个变量,但它不起作用。

  • 所以我有一些定制的POJO。每当我通过空构造函数实例化该对象时,我都希望将它的filed 初始化为来自< code > application . properties 的某个预设值。 在我的中: 我的POJO类: 在我的类中,我使用空构造函数实例化。但是当我打印字段时,我得到零。 如何使该字段的值为1500,我从< code > application-prod . properties 中获得