SpringBoot读取配置文件的方式
SpringBoot读取配置文件的方式
方式1:@Value
这种方式最简单易用,但是无法表示层级关系的配置,读取的配置来自application.properties(yml),使用示例:
application.yml
foo:
bar: mark
使用配置的类
在要读取配置的类中定义如下属性就可以使用配置
...
@Value("${foo.bar}")
private String foobar;
...
方式2:@ConfigurationProperties
该种读取配置文件的方式更强大,能够表示层级配置,将配置文件中某一前缀开头的配置映射成一个JavaBean,读取的配置来自application.properties(yml),使用示例:
application.yml
user:
name: Lucy
age: 20
配置类
@Data是lombok注解,主要是用它生成getter/setter方法,这是必须的,否则Spring帮不了你
@Data
@ConfigurationProperties(prefix = "user")
public class User {
private String name;
private Integer age;
}
SpringBoot入口类
通过该种方式配置的Bean都需要在入口类中开启,如下:
...
@SpringBootApplication
@EnableConfigurationProperties({User.class})
public class DemoApplication {
...
}
使用配置的类
在需要该配置的类中自动注入配置Bean即可
...
@Autowired
private User user;
...
方式3:@PropertySource
这种方式读取配置文件的优先级是最低的,也就是说如果有同名的配置存在就会被覆盖,该种方式与@Value有些类似,唯一的区别就是读取来源,读取的配置来自自定义文件,使用示例:
配置类
@Data
@Component
@PropertySource("classpath:car.properties")
public class Car {
@Value("${name}")
private String name;
@Value("${price}")
private Double price;
}
自定义配置文件(car.properties)
name=Audi A4
price=450000.12
方式4:@ConfigurationProperties与@PropertySource结合
有一种最常用的场景:配置文件名是自定义的,通过不同的前缀来区分不同的配置,那就需要方式1和方式3组合使用,读取的配置来自自定义文件,使用示例:
自定义配置文件(car.properties)
name=Audi A4
price=450000.12
audi.name=Audi A6
audi.price=680000.99
配置类
@Data
@PropertySource("classpath:car.properties")
@ConfigurationProperties(prefix = "audi")
public class Audi {
@Value("${name}")
private String name;
@Value("${price}")
private Double price;
}
SpringBoot入口类
...
@SpringBootApplication
@EnableConfigurationProperties({Audi.class})
public class Application {
...
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 为DeepSeek添加本地知识库
· .NET程序员AI开发基座:Microsoft.Extensions.AI
· 精选4款基于.NET开源、功能强大的通讯调试工具
· 数据不出内网:基于Ollama+OneAPI构建企业专属DeepSeek智能中台
· 大模型工具KTransformer的安装