yml文件
web:
uploadPath: ${web.upload_path}
platformUrl: ${web.platform_url}
在代码中通过@Value使用yml中给的值
@Value("${web.uploadPath}")
private String uploadpath;
因为yml文件不能通过@VALUE获取,启动项目会报错
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'yssCoursePortalController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'web.uploadpath' in string value "${web.uploadpath}"
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'web.uploadpath' in string value "${web.uploadpath}"
使用实体类
package com.xinlianpu.village.utils;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Component
@ConfigurationProperties(prefix = "web")
public class YmlValueUtil {
private String uploadPath;
private String platformUrl;
private final Security security = new Security();
public String getUploadPath() {
return uploadPath;
}
public void setUploadPath(String uploadPath) {
this.uploadPath = uploadPath;
}
public String getPlatformUrl() {
return platformUrl;
}
public void setPlatformUrl(String platformUrl) {
this.platformUrl = platformUrl;
}
public Security getSecurity() {
return security;
}
public static class Security{
private String userName;
private List<String> roles = new ArrayList<>(Collections.singleton("USER"));
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public List<String> getRoles() {
return roles;
}
public void setRoles(List<String> roles) {
this.roles = roles;
}
}
}
在其它文件中使用
注入
@Autowired
private YmlValueUtil ymlValueUtil;
获取使用
File file = new File(ymlValueUtil.getUploadPath() + "/course" + course.getId() + ".html");