application.properties 配置文件
answer.ftp.ip=127.0.0.1
answer.max.thread.size=10
answer.email.senders=answer_ljm@163.com,1072594307@qq.com
answer.email=answer_ljm@163.com
本地文件 config.txt
userName: AnswerAIL
password: ******
email: answer_ljm@163.com
文件位置: resources/config.txt
package com.answer.ai.common;
public interface Constant {
int DEFAULT_VALUE = -1;
}
@Service("answerService")
public class AnswerService {
@Getter
@Setter
private String authorName = "AnswerAIL";
public int threadMaxSize() {
return 10;
}
public int maxSize(int size) {
int threadMaxSize = threadMaxSize();
return threadMaxSize > size ? threadMaxSize : size;
}
public int defaultValue() {
return Constant.DEFAULT_VALUE;
}
}
@Component
public class ValueSummary implements InitializingBean {
/**
* 注入一个配置项
*/
@Value("${answer.ftp.ip}")
private String ftpIp;
/**
* 调用容器的一个bean的方法获取值
*/
@Value("#{answerService.threadMaxSize()}")
private int threadMaxSize;
/**
* 调用容器的一个bean的方法,且传入一个配置项的值作为参数
*/
@Value("#{answerService.maxSize(${answer.max.thread.size})}")
private int maxSize;
/**
* 注入其他 Bean 属性
* */
@Value("#{answerService.authorName}")
private String authorName;
/**
* 简单的运算
*/
@Value("#{${answer.max.thread.size} <= 0 ? ${answer.max.thread.size} : 0}")
private int minSize;
/**
* 注入配置项, 默认值: {@link com.answer.ai.common.Constant#DEFAULT_VALUE}
* `@Value("${answer.max.thread.size:#{T(com.answer.ai.common.Constant).DEFAULT_VALUE}}")`
* */
@Value("${answer.max.thread.size:#{answerService.defaultValue()}}")
private int maxThreadSize;
/**
* 注入普通字符串
* */
@Value("Do Not Repeat Yourself")
private String stringConstTxt;
/**
* 注入操作系统属性(与 <b>System.getProperties().getProperty("os.name")</b> 类似)
* */
@Value("#{systemProperties['os.name']}")
private String systemOsName;
/**
* 注入操作系统属性集对象(与 <b>System.getProperties()</b> 类似)
* */
@Value("#{systemProperties}")
private Properties properties;
/**
* 注入表达式结果(#{ } 里面写表 SpEL 达式)
* */
@Value("#{T(com.answer.ai.common.Constant).DEFAULT_VALUE}")
private int defaultValueConstant;
/**
* 注入表达式结果
* */
@Value("#{ T(java.lang.Math).random() * 100.0 }")
private double randomNumber;
/**
* 注入本地文件资源
* */
@Value("classpath:config.txt")
private org.springframework.core.io.Resource localFileSource;
/**
* 注入网络 URL 资源
* */
@Value("http://www.baidu.com")
private org.springframework.core.io.Resource baiduSource;
@Value("#{'${answer.email.senders}'.split(',')}")
private List<String> senders;
private static String userName;
private static String email;
/**
* 如果变量 answer.userName 未配置, 则设置默认值为: AnswerAIL
* */
@Value("${answer.userName:AnswerAIL}")
public void setUserNameme(String userName) {
ValueSummary.userName = userName;
}
/**
* 注入静态变量
* */
@Value("${answer.email}")
public void setEmail(String email) {
ValueSummary.email = email;
}
/**
* 所有配置值也可以从 environment 对象中取
* */
@Autowired
private org.springframework.core.env.Environment environment;
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("answer.ftp.ip: " + ftpIp);
System.out.println("Thread Max Size: " + threadMaxSize);
System.out.println("Max Size: " + maxSize);
System.out.println("Min Size: " + minSize);
System.out.println("Author Name: " + authorName);
System.out.println("Max Thread Size: " + maxThreadSize);
System.out.println("stringConstTxt: " + stringConstTxt);
System.out.println("System OS Name: " + systemOsName);
System.out.println("System Properties Size: " + properties.size());
System.out.println("System Properties Size: " + System.getProperties().size());
System.out.println("Default Value Constant: " + defaultValueConstant);
System.out.println("Random Number: " + randomNumber);
System.out.println();
System.out.println("Local File Source: \n" + IOUtils.toString(localFileSource.getInputStream()));
System.out.println("Baidu Source: " + IOUtils.toString(baiduSource.getInputStream()));
System.out.println("active profiles: " + JacksonUtil.toJsonString(environment.getActiveProfiles()));
System.out.println("answer.email: " + environment.getProperty("answer.email"));
System.out.println("answer.email.senders: " + senders);
System.out.println("answer.userName: " + userName);
System.out.println("answer.email: " + email);
}
}
程序运行结果
answer.ftp.ip: 127.0.0.1
Thread Max Size: 10
Max Size: 10
Min Size: 0
Author Name: AnswerAIL
Max Thread Size: 10
stringConstTxt: Do Not Repeat Yourself
System OS Name: Windows 10
System Properties Size: 62
System Properties Size: 62
Default Value Constant: -1
Random Number: 11.837094128616087
Local File Source:
userName: AnswerAIL
password: ******
email: answer_ljm@163.com
Baidu Source: ...
active profiles: ["dev"]
answer.email: answer_ljm@163.com
answer.email.senders: [answer_ljm@163.com, 1072594307@qq.com]
answer.userName: AnswerAIL
answer.email: answer_ljm@163.com
github 地址