springboot配置⽂件和实体类的映射
笔记梳理
SpringBoot注解把配置⽂件⾃动映射到属性和实体类实战
简介:讲解使⽤@value注解配置⽂件⾃动映射到属性和实体类
1、配置⽂件加载
⽅式⼀
1、Controller上⾯配置
@PropertySource({"classpath:resource.properties"})
2、增加属性
@Value("${test.name}")
private String name;
⽅式⼆:实体类配置⽂件
步骤:
1、添加 @Component 注解;
2、使⽤ @PropertySource 注解指定配置⽂件位置;
3、使⽤ @ConfigurationProperties 注解,设置相关属性;
4、必须通过注⼊IOC对象Resource 进来,才能在类中使⽤获取的配置⽂件值。
@Autowired
private ServerSettings serverSettings;
例⼦:
@Configuration
@ConfigurationProperties(prefix="test")
@PropertySource(value="classpath:resource.properties")
public class ServerConstant {
常见问题:
1、配置⽂件注⼊失败,Could not resolve placeholder
解决:根据springboot启动流程,会有⾃动扫描包没有扫描到相关注解,
默认Spring框架实现会从声明@ComponentScan所在的类的package进⾏扫描,来⾃动注⼊,
因此启动类最好放在根路径下⾯,或者指定扫描包范围
spring-boot扫描启动类对应的⽬录和⼦⽬录
2、注⼊bean的⽅式,属性名称和配置⽂件⾥⾯的key⼀⼀对应,就⽤加@Value 这个注解
如果不⼀样,就要加@value("${XXX}")
⽰例代码:
配置⽂件
web.upload-path=/Users/jack/Desktop
web.images-path=C:/Users/Administrator/Desktop/upload
web.file.path=C:/Users/Administrator/Desktop/upload
test.domain=www.lhwclass
test.name=springboot
实体类
1. 第⼀种
//@ConfigurationProperties
//@ConfigurationProperties(prefix = "test") public class ServerSettings {
//名称
@Value("${name}")
private String name;
@Value("${domain}")
private String domain;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getDomain(){
return domain;
}
public void setDomain(String domain){
this.domain = domain;
}
}
2. 带前缀的注解
//@ConfigurationProperties
@ConfigurationProperties(prefix ="test") public class ServerSettings {
/
/名称
// @Value("${name}")
private String name;
// @Value("${domain}")
private String domain;
public String getName(){
spring ioc注解return name;
}
public void setName(String name){
this.name = name;
}
public String getDomain(){
return domain;
}
public void setDomain(String domain){
this.domain = domain;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论