从非 Spring 托管 bean 中获取配置值

2024-01-07

我在我的应用程序中使用注释配置,而不是 XML...

@Configuration
@ComponentScan(basePackages = {
        "com.production"
    })
@PropertySource(value= {
        "classpath:/application.properties",
        "classpath:/environment-${COMPANY_ENVIRONMENT}.properties"
})
@EnableJpaRepositories("com.production.repository")
@EnableTransactionManagement
@EnableScheduling
public class Config {
    @Value("${db.url}")
    String PROPERTY_DATABASE_URL;
    @Value("${db.user}")
    String PROPERTY_DATABASE_USER;
    @Value("${db.password}")
    String PROPERTY_DATABASE_PASSWORD;

    @Value("${persistenceUnit.default}")
    String PROPERTY_DEFAULT_PERSISTENCE_UNIT;

在这个文件中,我注意到我可以从以下位置获取配置值@PropertySource文件。如何在 Spring 托管 bean 之外获取这些值?

我可以使用我的ApplicationContextProvider来获取这些值?

public class ApplicationContextProvider implements ApplicationContextAware {
    private static ApplicationContext applicationContext;

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public void setApplicationContext (ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }
}

如果我理解正确的话,是的,你可以使用你的ApplicationContextProvider class. @PropertySource属性最终在ApplicationContext Environment。因此,您可以像这样访问它们

public static class ApplicationContextProvider implements ApplicationContextAware {
    private static ApplicationContext applicationContext;

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public void setApplicationContext (ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
        Environment env = applicationContext.getEnvironment();
        System.out.println(env.getProperty("db.user")); // access them 
    }
}

所以基本上任何你可以参考的地方ApplicationContext,您可以获得在 a 中声明的属性@PropertySources or a PropertySourcesPlaceholderConfigurer.

然而,在这种情况下,ApplicationContextProvider必须在您的上下文中将其声明为 Spring bean。

@Bean
public ApplicationContextProvider contextProvider() {
    return new ApplicationContextProvider();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从非 Spring 托管 bean 中获取配置值 的相关文章

  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • 如何使用 JAVA 代码以编程方式捕获线程转储?

    我想通过 java 代码生成线程转储 我尝试使用 ThreadMXBean 为此 但我没有以正确的格式获得线程转储 因为我们正在使用jstack命令 请任何人提供一些帮助 他们是否有其他方式获取线程转储 使用任何其他 API 我想要的线程转
  • 您建议使用哪种压缩(GZIP 是最流行的)servlet 过滤器?

    我正在寻找一个用于大容量网络应用程序的 GZIP servlet 过滤器 我不想使用容器特定的选项 要求 能够压缩响应负载 XML Faster 已在大批量应用的生产中得到验证 应适当设置适当内容编码 跨容器移植 可选择解压缩请求 谢谢 我
  • 为自定义驱动程序创建 GraphicsDevice

    我正在开发一个在嵌入式系统中使用 Java 的项目 我有用于屏幕和触摸输入的驱动程序 以及用于文本输入的虚拟键盘 我的屏幕驱动程序有一个Graphics2D您可以绘制的对象和repaint Rectangle 更新方法 类似地 触摸驱动器能
  • 在 MongoDB 和 Apache Solr 之间同步数据的简单方法

    我最近开始使用 MongoDB 和 Apache Solr 我使用 MongoDB 作为数据存储 并且希望 Apache Solr 为我的数据创建索引 以实现应用程序中的搜索功能 经过一些研究 我发现 基本上有两种方法可以在 MongoDB
  • 如何通过注解用try-catch包装方法?

    如果应该在方法调用中忽略异常 则可以编写以下内容 public void addEntryIfPresent String key Dto dto try Map
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • Spring Batch:一个读取器、多个处理器和写入器

    在 Spring 批处理中 我需要将 ItemReader 读取的项目传递给两个不同的处理器和编写器 我想要实现的是 gt ItemProcessor 1 gt ItemWriter 1 ItemReader gt item gt Item
  • 我们如何测试包私有类?

    我正在看书Effective Java in Item 13 Minimize the accessibility of classes and members 它提到 为了方便测试 您可能想让类 接口或成员更易于访问 这在某种程度上是好的
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • 无法在 Java/Apache HttpClient 中处理带有垂直/管道栏的 url

    例如 如果我想处理这个网址 post new HttpPost http testurl com lists lprocess action LoadList 401814 1 Java Apache 不允许我这么做 因为它说竖线 是非法的
  • 集成 Spring Webflow 2 和 Apache Tiles [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我最近开始升级一些应用程序以使用 Spring Webflow 2 并且我想利用 Webflow 2
  • 如何让 Emma 或 Cobertura 与 Maven 一起报告其他模块中源代码的覆盖率?

    我有一个带有 Java 代码的多模块 Maven 设置 我的单元测试在其中一个模块中测试多个模块中的代码 当然 这些模块具有相互依赖性 并且在测试执行之前根据需要编译所有相关模块中的代码 那么 如何获得整个代码库覆盖率的报告 注意 我不是问
  • 如何从 Spring Boot 中排除依赖项

    我正在使用 Spring Boot 以下是我的 gradle 文件 buildscript ext springBootVersion 2 0 0 BUILD SNAPSHOT repositories mavenCentral maven
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • ArrayList.clear() 和 ArrayList.removeAll() 有什么区别?

    假如说arraylist定义为ArrayList
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐

  • 尝试静默命令时 Dos2unix 不工作

    我是这样从 Python 中调用 dos2unix 的 call dos2unix file1 shell True stdout PIPE 然而 为了使 Unix 输出保持沉默 我这样做了 f null open os devnull w
  • 如何找到完整无向图中的哈密顿循环数?

    有人可以解释如何在完整的无向图中找到哈密顿循环的数量吗 维基百科说 http en wikipedia org wiki Hamiltonian path Properties公式是 n 1 2 但是当我用这个公式计算时 K3只有1个周期
  • 在正则表达式中匹配带有井号 (#) 符号的单词

    我有正则表达式来检查某些文本是否包含单词 忽略边界 String regexp bSOME WORD HERE b 但是这个正则表达式返回false当 SOME WORD 以 主题标签 开头时 Example without String
  • 访问 SCD 中的静态文件

    In the NET CORE应用程序 我正在使用静态文件wwwroot文件夹 运行它时dotnet run the index html文件显示流畅且正常localhost port 但在将应用程序发布为SCD独立的开发包 并运行 exe
  • Razor 智能感知不适用于自定义 ASP.NET MVC 构建

    我能够创建 ASP NET MVC 的自定义构建并在 Web 应用程序中使用它 但是 我似乎无法弄清楚如何让 Razor 智能感知正常工作 如果您按照以下步骤操作 Razor 智能感知将仅显示网页信息 而不显示其他内容 HTML 帮助程序等
  • 使用字符串的值创建新的表单对象

    我有一个已启动的主表单 然后它可以转到我创建的任何其他表单 但最重要的是 我编写了一个类 我称之为它返回一个字符串 其中包含要转到的表单名称 目前我还没有这个工作 所以我将像这样从一个表单转到另一个表单 静态编写的链接代码 this Hid
  • 在 redux 中使用不可变 js(toJS 和 from JS)的正确方法

    我想知道这是否是正确的使用方法immutable js与 redux 和reselect also redux saga 具体来说我想知道toJS 和来自fromJS 以及在哪里使用它们 我的想法是 I use toJS 向传奇发送数据时
  • 当数据更改时,如何在 DataGrid 中保持选择?

    我有一个 DataGrid 并将 DataProvider 设置为我的数据 当我的数据更改时 DataGrid 会丢失所选行 并且滚动条会跳回到顶部 如何保持选择和滚动位置 如果你只是想保住位置 在任何更改数据的函数中 首先捕获选定的索引
  • 如何让ViewSwitcher只包裹当前显示的视图高度?

    我正在使用一个视图切换器 http developer android com intl fr reference android widget ViewSwitcher html这让我可以轻松地在两个不同的内置动画的列表标题之间来回翻转
  • 通过 http 标头传递真实性令牌

    我有一个使用令牌来验证用户身份的 Rails 应用程序 目前我正在将令牌作为参数传递 我想改变这一点 我相信可以通过 html header 传递它 我不明白如何使用authenticate or request with http tok
  • React Native 应用程序的 UI(在 iOS 上)滞后并且 fps 速率定期下降

    我的 React Native 应用程序的 UI 经常下降 但仅限于 iOS 我附上了一张屏幕截图 显示 UI fps 约为 11 而且它是一个非常稳定的波 并且不断发生多次 这会导致令人烦恼的滞后 例如在过渡 动画或倒计时 如附加屏幕上
  • 未知类型名称字符串 C++

    我是 C 新手 并且在我的程序中获得了一些帮助来比较两个 XML 文件 这是我的代码 include pugixml hpp include
  • Android.mk 应该在哪里?

    在 Android NDK 的文档中 存在以下声明 Android mk 文件位于项目 jni 目录的子目录中 http developer android com ndk guides android mk html http devel
  • 如何在 jQuery.validation 中添加不等于规则

    我想知道如何制作它 以便我可以制定一个字段不等于值的规则 就像我有一个名为 姓名 的字段 所以我不希望 姓名 您的名字 有人知道如何做到这一点吗 谢谢你的帮助 您可以使用自定义方法 如下所示 jQuery validator addMeth
  • UITextField 最大长度

    当我尝试过如何使用 swift 设置可以输入 UITextField 的最大字符数 https stackoverflow com questions 24641982 how to you set the maximum number o
  • PHP ltrim 与字符列表的行为

    我试图使用 php ltrim 函数从字符串中剥离一些开始部分 它工作正常 直到它在冒号 之后得到一个 i 字符 如果它在冒号后面找到 i 它就会忽略 i 字符 我知道可以用 substr 或任何其他方式来完成 但我想知道为什么它会发生在修
  • pageAction 上的 chrome“setBadgeText”

    我正在寻找如何将文本设置为页面操作图标并找到了这个示例 window setInterval function chrome pageAction setIcon imageData draw 10 0 tabId tabId 1000 f
  • 如何删除 ASP.NET Designer.cs 文件?

    我之前参与过没有 designer cs 文件的 VS 项目 现在我在另一台计算机上开始了一个新项目 但无法删除 Designer cs 文件 这真的很烦我 我真的需要它吗 我该如何删除它 一定有某个地方的设置 是的 您可以删除它们 这是方
  • 为什么扩张卷积可以保持分辨率?

    动画来自here https github com vdumoulin conv arithmetic 我想知道为什么扩张卷积声称可以保持分辨率 显然 蓝色的输入是 7x7 绿色的输出是 3x3 EDIT 解决分辨率损失的一种方法是用当前感
  • 从非 Spring 托管 bean 中获取配置值

    我在我的应用程序中使用注释配置 而不是 XML Configuration ComponentScan basePackages com production PropertySource value classpath applicati