IOC - 读取配置文件

读取默认配置文件

配置文件(application.properties):可以是 yml 也可以是 properties 格式,properties 不支持map、数组等,yml 可以

spring.profiles.active: dev 
server.port: 18080

读取

@Component
public class Test {
	@Value("spring.profiles.active")
    private String profile;
    
    @Value("server.port")
    private int port;
    
    // 指定默认值,如果配置文件不存在配置项,也不指定默认值,启动会报错
    @Value("application.name:myApplication")
    private String applicationName;
}

读取指定配置文件

配置文件

# 文件名称叫 db.properties
db.host: 192.168.1.1
db.port: 3306
db.username: root
db.password: 123456

读取

// classpath: 表示当前工程 resource 目录(application.yml 的默认目录)
// classpath*: 当前工程和所有 jar 的 resource 目录(读取 jar 里面的配置文件)
// classpath:conf/db.properties:resource 的下级 conf 目录
@PropertySource("classpath:db.properties")
@Component
public class DbConfig {
	@Value("db.host")
    private String host;
    
    @Value("db.port")
    private String port;
    
    @Value("db.username")
    private String username;
    
    @Value("db.password")
    private String password;
}

映射 java 类

配置文件(application.yml

person: 
    id: 1
    name: Milk
    bobby: [吃饭, 睡觉, 打豆豆]
    family: [father, mother]
    map: {k1: v1, k2:v2}
    pet: {type: dog, name: 旺财} # 会根据 Pet 类自动映射

映射的 java 类

@ConfigurationProperties(prefix = "person") // 注解表示要映射属性,并指定前缀
public class Person {
    // 匹配 person.id
    private int id; 
    private String name; 
    // 匹配 person.hobby
    private List<String> hobby; 
    private String[] family; 
    private Map map;
    private Pet pet; // 需要创建一个 Pet 类
}

开启配置

@EnableConfigurationProperties(Person.class) // 开启对应配置类(写在哪都可以)
@SpringBootApplication
public class App{

    public static void main(String[] args){
        SpringApplication.run(App.class, args)
    }

}

在 Person 上加 @Component 就可以不写 @EnableConfigurationProperties(Person.class)

如果想在写配置项的时候根据配置类进行提示,要加下面这个依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
posted @   CyrusHuang  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示