当前位置: 首页 > news >正文

使用spring-web 和 不是用spring-web各自的最小依赖

web 和非web使用spring各自的最小依赖

@Value加载属性的范围包括:

在纯 Spring 项目中,@Value 注解会从以下来源加载配置项:

(1) Java 系统属性
  • Spring 会从 JVM 的系统属性中查找配置项。
  • 示例:如果通过 -Dproperty.key=value 设置了系统属性,则 @Value("${property.key}") 会获取到该值。
(2) 环境变量
  • Spring 会从操作系统的环境变量中查找配置项。
  • 示例:如果设置了环境变量 PROPERTY_KEY=value,则 @Value("${property.key}") 可能会匹配到该值(具体取决于你的命名约定)。
(3) PropertyPlaceholderConfigurer 或 PropertySourcesPlaceholderConfigurer
  • 如果你在 Spring 配置中显式地定义了 PropertyPlaceholderConfigurer 或 PropertySourcesPlaceholderConfigurer,那么 @Value 注解会从这些配置器加载的属性文件中读取值。
  • 示例:
    <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:config.properties</value>
            </list>
        </property>
    </bean>
    在这种情况下,@Value("${property.key}") 会从 config.properties 文件中读取值。
(4) 自定义的 PropertySource
  • 如果你在 Spring 应用上下文中手动添加了自定义的 PropertySource,那么 @Value 注解会从这些来源中读取值。
  • 示例:
    @Bean
    public static PropertySource<?> customPropertySource() {
        Map<String, Object> properties = new HashMap<>();
        properties.put("property.key", "customValue");
        return new MapPropertySource("customProperties", properties);
    }
(5) 默认值
  • 如果上述所有地方都未找到配置项,则会使用 @Value 注解中指定的默认值。
  • 示例:${property.key:defaultValue} 中的 defaultValue 会在找不到 property.key 时被使用。

在非web的 Spring 项目中,通常通过以下方式加载配置文件:

(1) 使用 XML 配置
  • 如果你使用的是基于 XML 的配置,可以通过 <context:property-placeholder> 或 PropertyPlaceholderConfigurer 加载属性文件。
  • 示例:
    <context:property-placeholder location="classpath:config.properties"/>
    这样,@Value("${property.key}") 会从 config.properties 文件中读取值。
(2) 使用 Java 配置
  • 如果你使用的是基于 Java 的配置,可以通过 @PropertySource 注解加载属性文件。
  • 示例:
    @Configuration
    @PropertySource("classpath:config.properties")
    public class AppConfig {
        // 配置内容
    }
    在这种情况下,@Value("${property.key}") 会从 config.properties 文件中读取值。
(3) 手动加载属性文件
  • 你也可以通过代码手动加载属性文件,并将其注册到 Spring 上下文中。
  • 示例:
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
        PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
        Resource resource = new ClassPathResource("config.properties");
        configurer.setLocation(resource);
        return configurer;
    }

相关文章:

  • 3d pose 学习笔记2025
  • vscode无法ssh连接远程机器解决方案
  • 大模型chagpt原理(持续更新)
  • 新数据结构(4)——Java继承
  • springboot配置https
  • 【Prometheus】prometheus结合cAdvisor监控docker容器运行状态,并且实现实时告警通知
  • 编码格式大全解释以及相关编码特性
  • Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)
  • DeepSeek-R1技术革命:用强化学习重塑大语言模型的推理能力
  • 10. Hbase Compaction命令
  • webpack配置之---output.publicPath
  • 机器翻译同样的文本,是从英语翻译成日语更准确还是中文翻译成日语更准确
  • 语言大模型基础概念 一(先了解听说过的名词都是什么)
  • [Redis] Redis分布式锁与常见面试题
  • x64、aarch64、arm与RISC-V64:详解四种处理器架构
  • 2024年博客之星年度评选—创作影响力评审+主题文章创作评审目前排名(2024博客之星陪跑小分队助力2024博客之星创作者成长)
  • 从云原生到 AI 原生,谈谈我经历的网关发展历程和趋势
  • 微服务与网关
  • 数仓:核心概念,数仓系统(ETL,数仓分层,数仓建模),数仓建模方法(星型模型,雪花模型,星座模型)和步骤
  • mongodb
  • 美国新泽西客运公司遭遇罢工:40年来首次,35万人受影响
  • 大陆非遗项目打铁花、英歌舞将在台演出
  • 在本轮印巴冲突的舆论场上也胜印度一筹,巴基斯坦靠什么?
  • 魔都眼|锦江乐园摩天轮“换代”开拆,新摩天轮暂定118米
  • 病重老人被要求亲自取钱在农业银行门口去世?株洲警方介入
  • 市场监管总局召开平台企业支持个体工商户发展座谈会