Spring中注入基本变量值主要通过property标签或@Value注解实现,支持XML配置与注解方式;需区分字面量与占位符,推荐从application.properties等外部文件加载并用context:property-placeholder解析${key},@Value支持默认值和SpEL表达式。

在 Spring 配置文件中注入基本变量值(如 String、int、boolean 等),主要通过 property 标签 或 value 表达式 实现,支持 XML 配置和注解两种主流方式。关键在于区分“字面量”和“占位符”,并正确启用属性源。
XML 配置中直接写死基本值
适用于固定不变的简单值,用 <property> 的 value 属性或 <constructor-arg> 的 value 属性:
- 字符串:直接写,如
value="hello",双引号可省略 - 数字/布尔:Spring 自动类型转换,如
value="123"→ int,value="true"→ boolean - null 值:用
<null/>标签表示 - 特殊字符(如 &、<)需转义或用
<value><![CDATA[...]]></value>
从外部 properties 文件注入(推荐)
把配置值抽离到 application.properties 或 xxx.properties 中,再通过 <context:property-placeholder> 加载:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 先在 classpath 下建
config/app.properties,内容如:db.url=jdbc:mysql://localhost:3306/testapp.timeout=3000 - XML 中声明占位符解析器:
<context:property-placeholder location="classpath:config/app.properties"/> - 然后用
${key}注入:<property name="url" value="${db.url}"/><property name="timeout" value="${app.timeout}"/>
@Value 注解注入(基于注解的常用方式)
在类中使用 @Value 直接绑定值,支持默认值和 SpEL 表达式:
立即学习“Java免费学习笔记(深入)”;
- 注入 properties 中的值:
@Value("${db.url}") private String url; - 提供默认值(key 不存在时生效):
@Value("${app.debug:false}") private boolean debug; - 使用 SpEL 计算或转换:
@Value("#{systemProperties['os.name']}") private String osName;@Value("#{ T(java.lang.Math).random() * 100 }") private double random;
注意事项和常见问题
避免因配置未加载或拼写错误导致空指针或类型转换失败:
- 确保
context:property-placeholder已声明,且location路径正确(可用通配符,如classpath*:*.properties) - @Value 在非 Spring 管理的类(如 new 出来的对象)中无效,必须是 @Component/@Service 等托管 Bean
- XML 中 value 值若含 ${} 但未配置 property-placeholder,会原样传入,不解析
- Spring Boot 中更推荐用
@ConfigurationProperties批量绑定前缀配置,类型安全且支持校验

















