- 如何获取 系统配置文件 application.yaml或者 application.properties 中的属性值
package cn.waimaolang.demo.controller.home;
import cn.waimaolang.demo.properties.AppProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Index
{
@Value(value = "${book.name}")
private String bookName;
@GetMapping(path = "/")
public String index(
@RequestParam(defaultValue = "index",name = "in") String name,
@RequestParam(defaultValue = "0") int id
){
return bookName;
}
}
总结: 获取系统配置文件 直接在 @Component 注解标注的类(@Service; @Controller... 等注解都属于一种@Component 组件注解) 中,使用
@Value(用于在一种属性上的) 注解 获取 属性值。 如上例代码所示,直接在控制器中将 application.properties 的属性book.name 的值赋给属性
bookName 。
2.实际项目生产中,一般不推荐这种方式, 而是创建专门的属性类去获取 属性配置文件值。然后在其他层调用该属性类获取配置信息
1 .创建用于获取属性的包 com.package.demo.proerties [该包主要用于获取属性配置]
2. 在包下创建 属性类 UserProperties.java 专门用于读取 user.properties 配置信息 配置文件一般都储存在 classpath 目录下的config目录
package cn.waimaolang.demo.properties;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@PropertySource(value = "classpath:config/user.properties") // 该注解不能用于读取yaml配置文件,获取classpath的 config目录下的哪一个配置文件
@ConfigurationProperties(prefix = "spring.fut") // 获取 某一个前缀的配置
public class UserProperties {
// 获取某一个具体的配置值
@Value("${username}")
public String username;
// 该方法用于给外部调用获取 对应的配置信息
public String getUsername(){
return username;
}
}
3. 业务中获取配置信息
// 将配置属性的Bean 注入到当前类
@Autowired
AppProperties appProperties;
@GetMapping(path = "/")
public String index( ) {
return appProperties.getUsername();
}
实际开发中 通常把 框架自带的配置文件放在 classpath 根目录。 其他业务相关的配置信息一般放在 classpath 下的config目录
网友评论