Я новичок в Spring и пытаюсь выполнить две задачи:
- Я хочу сохранить данные конфигурации моего приложения (IP-адреса сервера, учетные данные и т. Д.) В файле свойств, специфичном для развертывания.(`environment.properties`)
- Я хочу использовать Spring для внедрения зависимостей этих данных конфигурации в мое приложение
Итак, сначала у нас есть файл environment.properties
:
ftpServer=http://example.com/ftp
ftpUser=exampleUser
ftpPassword=examplePassword
Следующий мой конфигурационный файл Spring, который содержит propertyConfigurer
бин, который я считаю Я правильно настроил:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="placeholderPrefix" value="${" />
<property name="placeholderSuffix" value="}" />
<property name="locations">
<value>classpath:environment.properties</value>
</property>
</bean>
<bean id="ftpServer" class="java.lang.String">
<constructor-arg type="java.lang.String" value="${ftpServer}"/>
</bean>
<bean id="ftpUser" class="java.lang.String">
<constructor-arg type="java.lang.String" value="${ftpUser}"/>
<constructor-arg></constructor-arg>
</bean>
<bean id="ftpPassword" class="java.lang.String">
<constructor-arg type="java.lang.String" value="${ftpPassword}"/>
</bean>
И, наконец, исходный код, где яхочу, чтобы эти специфичные для развертывания данные были введены в:
public void connectToServerAndDoSomething()
{
String strServer = oAppContext.getBean("ftpServer");
String strUser = oAppContext.getBean("ftpUser");
String strPassword = oAppContext.getBean("ftpPassword");
FTPClient oFTP = new FTPClient(strServer, strUser, strPassword);
}
Мой вопрос :
В моем файле конфигурации появляется ошибка проверки bean-компонента Spring:
SEVERE: Exception sending context initialized event to listener instance of class
org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Unexpected failure during bean definition parsing
Offending resource: ServletContext resource [/WEB-INF/app-config.xml] Bean 'ftpUser'; nested exception is
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: <constructor-arg> element must specify a ref or value
Offending resource: ServletContext resource [/WEB-INF/app-config.xml] Bean 'ftpUser' -> Constructor-arg
Поскольку я новичок в Spring, я не знаю с чего начать.Разве нельзя использовать Spring для внедрения типов Java, таких как String
s, или нельзя использовать Spring таким, какой я есть?В любом случае, чтобы обойти это?
Заранее спасибо!