更改从属性文件中读取的 属性 值的最佳方法

Best way to alter the property value which is read from the properties files

我有一个 application.properties 文件如下

mail.content = Hey #name Good morning #name, are you a good developer?

我的JavaSpring启动代码

public class MailUtils{
     @Value("${mail.content}")
     String content;
     //Other codes
    
    public void sendMail(){
     //Other code
     String body = content.replaceAll("#name", firstName);
     //reamining code
}

我需要根据 java 变量更改应用程序属性的值。为此,我正在使用 String class 替换方法。我只需要知道我们有比这更好的方法吗?如果可以,请帮我做一下?

谢谢

我会在创建 MailUtils 时更改 属性。 'firstName' 声明在哪里?

public class MailUtils {

    String content;

    @Value("${mail.content}")
    public void setContent(String content) {
        String firstname = System.getProperty("user.name");
        this.content = content.replace("#name", firstname);
    }

    public void sendMail(){
        ...
    }
}

看看 Java 的 MessageFormat 并使用该语法。比全部替换更强大,副作用更小。

https://docs.oracle.com/javase/1.5.0/docs/api/java/text/MessageFormat.html

在您的 application.properties 中使用 {} 占位符。

int 行星 = 7; String event = "原力干扰";

String result = MessageFormat.format(
     "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
     planet, new Date(), event);
 
The output is:
 At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.