一、配置文件的赋值
调用无参构造器给容器中注册一个 Bean 组件:
@Configuration
public class MainConfigOfPropertyValues {
@Bean(name = "person")
public Person person01() {
return new Person();
}
}
调用 Person 的无参构造器,然后创建对象,这时对象的属性都是没有值的,为 null。
之前在配置文件中,可以使用 value 来给属性赋值:
二、使用 @Value 注解给 JavaBean 的属性赋值
可以在属性上面使用 @Value 注解来给属性赋值。
支持三种方式:
1、基本数据类型
2、可以使用 SpEL 表达式,#{},如#{18-2}
3、可以使用${},读取配置文件【properties】中的值(在运行环境变量里面的值)
在 Person 类中使用 @Value 注解来给属性赋值:
public class Person {
@Value("张三")
private String name;
@Value("#{20 - 2}")
private Integer age;
@Value("${person.nickName}")
private String nickName;
}
创建一个外部的配置文件 person.properties
person.nickName=小张三
在配置类上面使用 @PropertySource 导入 properties 文件
//使用@PropertySource 读取外部配置文件中 K/V 保存到运行的环境变量中;
//加载完外部的配置文件之后使用 \${} 取出配置文件中的值。
@PropertySource(value = {"classpath:/person.properties"}) //读取配置文件的值,可以写多个
@Configuration
public class MainConfigOfPropertyValues {
@Bean(name = "person")
public Person person01() {
return new Person();
}
}
注意:@PropertySource 是一个可重复注解,可以使用多个 @PropertySource 或者直接使用 @PropertySources;

测试:
@Test
public void test01() {
AnnotationConfigApplicationContext ioc = new AnnotationConfigApplicationContext(MainConfigOfPropertyValues.class);
System.out.println("IOC容器创建完成");
String[] names = ioc.getBeanDefinitionNames();
for (String name : names) {
System.out.println(name);
}
Person person = (Person) ioc.getBean("person");
System.out.println("person = " + person);
Environment environment = ioc.getEnvironment();
//获取配置文件中的值
String property = environment.getProperty("person.nickName");
System.out.println(property);
ioc.close();
}
可以发现,声明在 properties 文件中的值会添加到环境变量中,可以直接从运行环境中获取配置变量的值。
分类:
Spring注解驱动
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?