当前位置: 首页 > 知识库问答 >
问题:

如何从ApplicationContext对象中获取属性值?(不使用注释)

益炜
2023-03-14

如果我有:

@Autowired private ApplicationContext ctx;

我可以通过使用getBean方法之一获得bean和资源。然而,我不知道如何获取属性值。

显然,我可以创建一个具有@Value属性的新bean,如:

private @Value("${someProp}") String somePropValue;

我在Application Context对象上调用什么方法来获得该值而无需自动装配bean?

我通常使用@Value,但有一种情况是SPeL表达式需要是动态的,所以我不能只使用注释。

共有3个答案

金英华
2023-03-14

假设${someProp}属性来自PropertyPlaceHolderConfigure,这会使事情变得困难。PropertyPlaceHolderConfigure是BeanFactoryPostProcessor,因此仅在容器启动时可用。因此,这些属性在运行时对bean不可用。

一个解决方案是创建某种类型的值持有者bean,用所需的属性初始化它。

@Component
public class PropertyHolder{

    @Value("${props.foo}") private String foo;
    @Value("${props.bar}") private String bar;

    // + getter methods
}

现在,在需要属性的地方注入这个属性文件夹,并通过getter方法访问属性

景河
2023-03-14

如果您被困在Spring pre3.1上,您可以使用

somePropValue = ctx.getBeanFactory().resolveEmbeddedValue("${someProp}");
吕翰飞
2023-03-14

如果SPeL表达式需要动态,请手动获取属性值:

somePropValue = ctx.getEnvironment().getProperty("someProp");
 类似资料:
  • 我有一个包含如下值的对象 这些都在变量autossuggest中。现在我只想获得值 谢谢你的小费

  • 在 PowerShell 中,如何通过指定对象的名称(字符串)来获取对象的属性值?我想要类似这样的东西: 是否有类似于“获取属性名称”的内容?

  • 我是Javascript新手,我正试图从包含多个对象的数组中获取id键的值。 通过 for..在循环中,我需要对象的id - 如1,2或3 - 与不同的值进行比较。 我试着这样做: 但是,我这样做了,删除Id值返回未定义。 我想不通为什么返回未定义,我无法解决这个问题。 我希望我能很好地表达自己,对不起我的英语不好。

  • 我试着从这里开始: 到此处: 用尽可能少的代码。显然,我可以只循环它并构建数组,但我需要在各种对象上进行大量的操作。我可以编写一个函数来实现它,但很难使该函数对我的应用程序足够通用。 在jQuery中有这个的快捷方式吗?

  • 我知道如果我们知道注释类,我们可以很容易地获得特定的注释并访问其属性。例如: 它将返回特定注释接口的引用,因此您可以轻松访问其值。 我的问题是,我是否对特定的注释类没有预先了解。我只想在运行时使用反射来获取所有注释类名及其属性,以便将类信息转储为例如JSON文件。我怎样才能以简单的方式做到这一点。 此方法将仅返回注释接口的动态代理。

  • 问题内容: 有一个叫的课程。 而且我有一系列对象。我现在需要将数组中所有这些对象的s 提取到新数组中。 我也发现了类似的问题。但是它在Objective-C中,因此可以用来完成此任务。 如何在Swift中执行此操作? 问题答案: 您可以使用方法,将某种类型的数组转换为另一种类型的数组-在您的情况下,从的数组转换为的数组: