@PropertySource的使用

假设我们有一个名为 database.properties 的属性文件,内容如下,该文件位于项目的类路径 (resources 目录) 下:

java 复制代码
# database.properties
db.url=jdbc:mysql://localhost:3306/mydb
db.username=root
db.password=password

然后,创建一个 Spring 配置类,使用 @PropertySource 加载上述属性文件,并在配置类中使用这些属性:

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import javax.sql.DataSource;

@Configuration
@PropertySource("classpath:database.properties") // 加载属性文件
public class AppConfig {

    @Autowired
    private Environment env; // 注入环境变量,以便访问属性

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();

        // 从环境变量中读取属性并设置到数据源中
        dataSource.setUrl(env.getProperty("db.url"));
        dataSource.setUsername(env.getProperty("db.username"));
        dataSource.setPassword(env.getProperty("db.password"));

        return dataSource;
    }
}

我们可以通过 @PropertySource 注解指定了 database.properties 文件的位置。然后,使用 @Autowired 注入 Environment 对象,通过调用 env.getProperty() 方法读取属性值,并将这些值应用于数据源 (DataSource) 的配置中。这样,当 Spring 应用启动时,它会自动读取这些外部配置,并正确地配置数据源 Bean,无需硬编码任何数据库连接细节。

相关推荐
入瘾8 小时前
etcd 显示连接失败
数据库·chrome·etcd
本体智能8 小时前
预制指标、宽表、SQL、本体ABC:真正决定长期成本的,是一次变更会波及多少层
数据库·sql·本体神经网络·uino数据智能引擎
长安11088 小时前
数据库基础知识----数据库大观
数据库·oracle
瀚高PG实验室9 小时前
使用hgdbdeveloper开发工具导出数据后在异机恢复时报错
数据库·瀚高数据库
百结21410 小时前
PostgreSQL 初体验
数据库·postgresql
ward RINL10 小时前
Redis 安装及配置教程(Windows)【安装】
数据库·windows·redis
bingHHB11 小时前
金蝶云星空旗舰版 × 赛狐ERP:亚马逊卖家业财一体化的最后一公里
运维·数据库·集成学习
Nontee12 小时前
Redis高可用架构解析
数据库·redis·架构
淼淼爱喝水12 小时前
DVWA SQL 注入(Medium/High 级别)过滤绕过与防范实验(超详细图文版)
数据库·sql·网络安全
csdn_aspnet12 小时前
MySQL主从延迟根因诊断法,从网络、IO、SQL到参数,系统化定位高并发下的同步瓶颈
数据库·mysql·主从