If you lose your purpose, it’s like you’re broken. 如果你生活漫无目的,那就好像你坏了。
@ConfigurationProperties与@Vuale两个注解的的区别:
@ConfigurationProperties:是和JavaBean的所有属性绑定
@Value:是一个一个属性绑定
@ConfigurationProperties:不支持spring表示式的写法
@Value:支持spring的表达式的写法,#{12+13}
@ConfigurationProperties:支持JSR303数据校验
@Value:不支持JSR303数据校验
@ConfigurationProperties:支持复杂类型的绑定,比如Map,List
@Value:不支持复杂的类型绑定,比如${user.map}是读不出数据的
1、配置类
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Lazy;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Data
@Order(-1)
@Component
@ConfigurationProperties(prefix = "saas")
public class SaasProperties {
/**
* 亿美短信配置
*/
private EmayProperties emay = new EmayProperties();
/**
* 阿里OSS配置
*/
private ResourceProperties resource = new ResourceProperties();
@Data
public static class EmayProperties {
private String ip;
private int port;
private String appId;
private String secretKey;
private String filePath;
}
@Data
public static class ResourceProperties {
private String endPoint;
private String keyId;
private String keySecret;
private String bucketName;
private String fileResource;
private String thumbnail;
private String companyLicense;
}
}
2、application.properties部分配置
#OSS
saas.resource.end-point=xxx.com
saas.resource.key-id=xxx
saas.resource.key-secret=xxxBWVfhj
saas.resource.bucket-name=resource-message
saas.resource.file-resource=resource
saas.resource.thumbnail=thumbnail
saas.resource.company-license=companyLicense
## 亿美软通相关
saas.emay.ip=bjmtn.b2m.cn
saas.emay.port=80
saas.emay.app-id=3SDK-EMS-0130-XXXXX
saas.emay.secret-key=secretKey
#saas.emay.file-path=/data/temp/emay/temp.txt
saas.emay.file-path=D:\\emaysms.txt
3、测试
@SpringBootTest
public class SaasClientPropertiesTest {
@Autowired
private SaasClientProperties saasClientProperties;
@Value("${saas.client.emay.ip}")
private String emayIp;
@Test
public void saasPropertiesTest() {
System.out.println(JSONUtil.toJsonStr(saasClientProperties));
System.out.println(emayIp);
}
}