首页 > 解决方案 > 在spring框架依赖注入中调用构造参数

问题描述

我有一个项目,其中我们有 2 个项目,如下所示:

  1. 脚本 - pom.xml、application-context.xml、test.properties
  2. 硒网络驱动程序 - pom.xml

1 通过依赖注入从 application-context.xml 调用 web 驱动构造函数和对象,如下所示:

<import resource="application-context.xml"/>
    <bean id="webDriverFactory" class="...Selenium">

<constructor-arg name="proxyip" value="${proxyip} == null ? null: ${proxyip]}"/>
<constructor-arg name="proxyport" value="${proxyport} == null ? null: ${proxyport}"/>

@Autowired
  private WebDriver webDriver;

在 1

在 2 我有以下代码:

if (!proxyip.isEmpty() && !proxyport.isEmpty()) {
      proxy = create_proxy();
    }

我有很多额外的属性文件,所以不想为它们定义代理 IP/代理端口的默认值和虚拟值。有没有办法在 application-context.xml 中定义默认值。我尝试关注但没有奏效。

<constructor-arg name="proxyip" value="${proxyip} == null ? null: ${proxyip]}"/>
<constructor-arg name="proxyport" value="${proxyport} == null ? null: ${proxyport}"/>

测试属性:

proxyip=ip
proxyport=port no 

, 与

<constructor-arg name="proxyIP" value="${proxyip}"/>
<constructor-arg name="proxyPort" value="${proxyport}"/>

但是test.properties:

#proxyip=ip
#proxyPort=port no doesn't work with

在 application-context.xml 中

<constructor-arg name="proxyip" value="${proxyip} == null ? null: ${proxyip]}"/>
<constructor-arg name="proxyport" value="${proxyport} == null ? null: ${proxyport}"/>

标签: spring

解决方案


您可以在对配置属性的引用中定义默认值,如下所示:

<constructor-arg name="proxyIP" value="${proxyip:127.0.0.1}"/>
<constructor-arg name="proxyPort" value="${proxyport:1234}"/>

您可以将默认值设置为空值,然后您的代码可以检查:

<constructor-arg name="proxyIP" value="${proxyip:}"/>
<constructor-arg name="proxyPort" value="${proxyport:}"/>

我不认为你可以有一个null值作为默认值,所以我希望一个空值就足够了。应该给出你显示的代码。事实上,我认为尝试调用isEmpty()不适用于null值。


推荐阅读