首页 > 其他分享 >通过实现 EnvironmentAware 接口获取配置信息

通过实现 EnvironmentAware 接口获取配置信息

时间:2024-11-02 11:13:45浏览次数:3  
标签:数据源 接口 environment 获取 datasource props public EnvironmentAware

参考:

实现 EnvironmentAware 接口将配置文件中的属性放置到系统环境变量中

EnvironmentAware 接口的作用

EnvironmentAware 接口定义:

public interface EnvironmentAware extends Aware {
	void setEnvironment(Environment environment);
}
  • 所有的配置信息,都会加载到 Environment 实体中,因此我们可以通过这个对象来获取系统的配置;
  • 凡是被 Spring 管理的类,实现接口 EnvironmentAware 接口重写 setEnvironment 方法,该方法中可以在工程启动时,获取到 Environment。

比如 SpringBoot 整合 MyBatis

application.properties 文件配置:

datasource.driverClassName=com.mysql.jdbc.Driver
datasource.url=jdbc:mysql://localhost:3306/my-project?characterEncoding=utf8&serverTimezone=UTC
datasource.username=root
datasource.password=123456

配置类:

@Configuration 
public class MyBatisConfig implements EnvironmentAware {
    private Environment environment;
   
    @Override
    public void setEnvironment(final Environment environment) {
        this.environment = environment;
    }
    /**
     * 创建数据源(数据源的名称:方法名取为 XXXDataSource() 则 XXX 为数据库名称,该名称也就是数据源的名称)
     */
    @Bean
    public DataSource druidDataSource() throws Exception {
        Properties props = new Properties();
        props.put("driverClassName", environment.getProperty("datasource.driverClassName"));
        props.put("url", environment.getProperty("datasource.url"));
        props.put("username", environment.getProperty("datasource.username"));
        props.put("password", environment.getProperty("datasource.password"));
        return DruidDataSourceFactory.createDataSource(props);
    }
    /**
     * 根据数据源创建 SqlSessionFactory
     */
    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        SqlSessionFactoryBean fb = new SqlSessionFactoryBean();
        // 指定数据源
        fb.setDataSource(druidDataSource());
        fb.setTypeAliasesPackage("com.project.domain");
        // 指定 mapper 文件
        fb.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
        return fb.getObject();
    }
}

标签:数据源,接口,environment,获取,datasource,props,public,EnvironmentAware
From: https://www.cnblogs.com/Higurashi-kagome/p/18521699

相关文章

  • D55【python 接口自动化学习】- python基础之模块与标准库
     day55练习:实现求导学习日期:20241101学习目标:模块与标准库--70小试牛刀:如何使用Python为函数求导?学习笔记:需求分析使用第三方模块实现函数求导编写程序并测试#求导fromsympyimportDerivative,Symbolx=Symbol('x')y=x*x+3*x+2d=Derivative(y,x)pri......
  • D52【python 接口自动化学习】- python基础之模块与标准库
    day52标准库学习日期:20241029学习目标:模块与标准库--67标准库:Python默认提供的便携功能有哪些?学习笔记标准库中的常见组件如何通过官方文档学习标准fromurllib.requestimporturlopenwithurlopen('http://www.baidu.com')asf:print(f.read(300)......
  • Bash脚本当中获取当前脚本绝对路径位置
    Bash脚本当中获取当前脚本绝对路径位置在Bash脚本中,一般使用命令获取当前目录,而不是直接依赖相对路径,这是因为相对路径的基础是脚本的运行位置,相对路径可能会因为脚本的运行位置不同而发生变化,导致脚本找不到指定文件或目录。获取脚本所在的目录可以使脚本更具通用性和可靠性,不......
  • Chromium 中chrome.topSites扩展接口定义c++
    一、chrome.topSites使用 chrome.topSites API访问新标签页上显示的热门网站(即最常访问的网站)。不包括用户自定义的快捷方式。权限topSites您必须声明“topSites”扩展程序清单中授予使用此API的权限。{ "name":"Myextension", ... "permissions":[ ......
  • 优惠影票对接接口渠道如何避坑?
    对接优惠影票接口渠道时,为了避免陷入潜在的坑,你可以按照以下步骤和建议进行操作:1.合法性和合规性:确认供应商资质,优先选择具有相关票务经营资质的渠道,如大型在线票务平台或直接与影院院线合作的服务商,确保它们有合法的经营许可和授权。仔细审查合作合同,特别是关于数据使用和......
  • 数字人直播带货前景曝光!手把手教你获取高质量系统源码!
    随着数字人直播技术的应用频率不断升高,它所蕴含着的市场前景和收益潜力也开始逐渐显现,使得不少人都对它在带货方面的效果产生好奇,并纷纷开始打听起了与数字人直播带货前景以及操作方式相关的消息。其中,就数字人直播带货的前景来说,根据iiMediaResearch发布的《2024年中国虚拟......
  • C# 通过注册表、API两种方式获取显示器的分辨率尺寸
    还是那个项目……还是那个领导……要求获取用户的显示器尺寸。一脸懵逼???还是照做……获取显示器的尺寸,有两种方法。第一种是通过查询注册表中,存储的指定显示器的相关信息;第二种是通过windowsAPI1、查询注册表中存储的显示器信息///<summary>///获取显示器的相关......
  • 浅谈android设备sysfs接口硬件调用之手电筒,马达,呼吸灯
    这篇文章我们来介绍下几个sysfs接口的调用。事实上,驱动接口一般有两种方式调用:ioctl()和read()/write()。前一种要么能读懂内核源码,要么照抄strace用户空间驱动得到的调用,因此不做研究。需要注意的是,由于安卓内核碎片化过于严重,各个厂商之间的代码差异过大,因此直接和内核交互来......
  • 获取磁盘中各个文件夹的大小
    公司的笔记本硬盘不大,现在的开发包和软件都比较大,经常用着用着,磁盘空间就满了。所有有时候需要先分析一下,到底是哪些文件占用了空间。方法1:使用Everything软件(免费)Everything软件可以说是神器。平常经常用它来搜索文件,速度非常的快。它的文件列表是针对整个计算机的,可以默认的......
  • 接口测试有哪些工具
    接口测试中,以下工具值得推荐:一、Postman;二、Swagger;三、SoapUI;四、JMeter;五、Rest-Assured;六、KarateDSL;七、Insomnia。Postman是一款强大的HTTP请求工具,主要用于接口测试。它可以支持各种类型的HTTP请求,如GET、POST、PUT等,支持多种数据格式如JSON、XML等,并可以设置请求头和Cook......