You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否有仅用于加载配置属性的Spring组件及对应Maven Starter?

关于Spring配置属性加载组件与普通Java应用实现方案

1. 专门用于加载配置属性的Spring组件

Spring核心生态里有成熟的组件负责配置属性的加载与绑定:

  • @ConfigurationProperties:核心注解,能将properties/yaml文件中的属性直接绑定到Java对象,支持嵌套结构、自动类型转换、JSR-380校验等特性。
  • PropertySourcesPlaceholderConfigurer:Spring核心Bean,负责解析${}占位符,同时支持加载多源配置(properties文件、环境变量、系统属性等)。
  • Environment接口:提供统一的配置访问入口,可跨来源获取配置值,也支持占位符解析。

2. 轻量的Maven坐标(无冗余Spring Boot特性)

如果只需要配置读取与对象绑定的核心功能,无需Spring Boot的Web、自动配置等额外特性,可引入以下依赖:

<!-- Spring核心上下文,提供配置加载基础能力 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.29</version> <!-- 选择稳定兼容版本即可 -->
</dependency>
<!-- 编译期依赖,生成配置元数据,支持IDE提示(可选) -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <version>2.7.14</version> <!-- 与spring-context版本兼容即可 -->
    <optional>true</optional>
</dependency>

3. 普通Java应用实现Spring Boot式属性读写的可行性

完全可行,实现步骤如下:

  • 步骤1:编写配置属性类
    @ConfigurationProperties(prefix = "app")
    public class AppProperties {
        private String name;
        private int port;
        private Database db;
    
        // 嵌套配置类
        public static class Database {
            private String url;
            private String username;
            // getter、setter方法
            public String getUrl() { return url; }
            public void setUrl(String url) { this.url = url; }
            public String getUsername() { return username; }
            public void setUsername(String username) { this.username = username; }
        }
    
        // 顶层属性的getter、setter方法
        public String getName() { return name; }
        public void setName(String name) { this.name = name; }
        public int getPort() { return port; }
        public void setPort(int port) { this.port = port; }
        public Database getDb() { return db; }
        public void setDb(Database db) { this.db = db; }
    }
    
  • 步骤2:配置Spring上下文
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
    import org.springframework.core.io.ClassPathResource;
    
    @Configuration
    public class AppConfig {
        // 注册配置文件加载器
        @Bean
        public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
            PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
            configurer.setLocations(new ClassPathResource("application.properties"));
            return configurer;
        }
    
        // 注册配置属性Bean
        @Bean
        public AppProperties appProperties() {
            return new AppProperties();
        }
    }
    
  • 步骤3:编写主类启动应用
    public class MainApp {
        public static void main(String[] args) {
            AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
            AppProperties props = context.getBean(AppProperties.class);
            
            // 读取配置
            System.out.println("应用名称:" + props.getName());
            System.out.println("数据库地址:" + props.getDb().getUrl());
            
            context.close();
        }
    }
    
  • 步骤4:添加配置文件
    在src/main/resources下创建application.properties:
    app.name=MyStandaloneApp
    app.port=8080
    app.db.url=jdbc:mysql://localhost:3306/mydb
    app.db.username=root
    

通过以上步骤,就能在普通Java应用中获得和Spring Boot一致的配置绑定体验,包括嵌套对象、类型转换等功能。

内容的提问来源于stack exchange,提问作者vab2048

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:15:07