我有一个非常奇怪的问题。我会尝试简化它以更好的方式解释。 我有一个项目,一切正常,我使用以下bean的应用程序上下文:
<bean id="props" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/oxygen.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>
然后我声明像
这样的bean<bean id="authSiteParamsBean" class="comtech.swm.domain.index.AuthSiteParamsBean">
<constructor-arg index="0" value="${swc.login:oxygen}" />
<constructor-arg index="1" value="${swc.password:oxygen}" />
<constructor-arg index="2" value="${swc.proxyHost:8080}" />
<constructor-arg index="3" value="${swc.endpoints:smth}" />
</bean>
一切都很好。但是,如果我将这些行添加到pom.xml
<dependency>
<groupId>com.octo.captcha</groupId>
<artifactId>jcaptcha-all</artifactId>
<version>1.0-RC6</version>
</dependency>
值分隔符停止工作!因此,当一切正常时,我要么从.properties文件或默认值获取值。但是有了这种依赖关系,我得到了像&#34; $ {swc.login:oxygen}&#34;这样的字符串。所以,我尝试修改我的属性bean并明确声明属性valueSeparator:
<bean id="props" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/oxygen.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="valueSeparator" value=":" />
</bean>
我能得到什么?
严重:上下文初始化失败 org.springframework.beans.factory.BeanCreationException:错误 创建名称为&#39;道具&#39;在ServletContext资源中定义 [/WEB-INF/appContext.xml]:设置属性值时出错;嵌套 异常是org.springframework.beans.NotWritablePropertyException: 无效的属性&#39; valueSeparator&#39;豆类 [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer]: Bean属性&#39; valueSeparator&#39;不可写或无效 二传法。 setter的参数类型是否与返回匹配 吸气剂的类型?引起: org.springframework.beans.NotWritablePropertyException:无效 property&#39; valueSeparator&#39;豆类 [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer]: Bean属性&#39; valueSeparator&#39;不可写或无效 二传法。 setter的参数类型是否与返回匹配 吸气剂的类型?
请帮忙!我想继续使用这个验证码和默认值。
答案 0 :(得分:0)
我找到了确切的原因和解决方案。我通过IDEA构建了依赖树,并发现captcha库依赖于旧的spring框架(2.0),它不支持属性的默认值。所以我现在只需在pom.xml中使用它,它就完美了:
<dependency>
<groupId>com.octo.captcha</groupId>
<artifactId>jcaptcha-all</artifactId>
<version>1.0-RC6</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>