随笔 - 1162  文章 - 0  评论 - 16  阅读 - 59万 

一、配置文件的赋值

调用无参构造器给容器中注册一个 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 文件中的值会添加到环境变量中,可以直接从运行环境中获取配置变量的值。

posted on   格物致知_Tony  阅读(118)  评论(0编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?
点击右上角即可分享
微信分享提示

目录导航