gpt4 book ai didi

java - 从 XML 属性文件 Autowiring Spring 构造函数参数

转载 作者:行者123 更新时间:2023-11-30 03:43:30 27 4
gpt4 key购买 nike

我正在使用 Spring 自动连接 bean 进行配置。一些参数来自属性文件:

<bean id="mydb" class="myproject.mydb" autowire="constructor">
<constructor-arg name="host" value="${mydb.host}" />
<constructor-arg name="db" value="${mydb.db}" />
<constructor-arg name="user" value="${mydb.user}" />
<constructor-arg name="password" value="${mydb.password}" />
</bean>

有没有一种方法可以根据 bean id 自动连接这些属性,以便我只需编写以下内容?

<bean id="mydb" class="myproject.mydb" autowire="constructor" />

编辑:这样做的目的是不必显式指定非 bean 构造函数参数。我希望 Spring 自动检查 beanId.constructorArgName

的属性

最佳答案

要完全实现您想要的效果,我认为您需要实现一个 BeanPostProcessor 并在 postProcessBeforeInitialization 中提供自定义接线逻辑(在其中读取 .properties 文件) >。 bean 名称可用于该方法,但是这存在多个问题。第一个是参数名称是 not necessarily available at runtime ,所以索引可能是更好的选择。第二个是你已经有一个实例化的bean(因此需要存在默认构造函数),并且你需要实例化另一个bean,并丢弃第一个bean,这是浪费的。要使用已经存在的实例,您需要通过属性而不是构造函数来连接它,这违反了封装并且不是您所要求的。第三,发生的事情根本不明显。因此,总而言之,您最好完全避免这种情况。

关于java - 从 XML 属性文件 Autowiring Spring 构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26299170/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com