У меня есть автономное приложение Spring со встроенным FTP-сервером Apache. Конфигурации выглядит следующим образом -Конфигурация пользовательского пространства Spring config
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:afs="http://mina.apache.org/ftpserver/spring/v1"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd">
<context:property-placeholder location="classpath:config.properties" system-properties-mode="OVERRIDE"/>
<afs:server id="server" anon-enabled="false">
<afs:listeners>
<afs:nio-listener name="default" port="2222"
idle-timeout="60" />
</afs:listeners>
<!-- other AFS config -->
</afs:server>
</beans>
Я хотел бы загрузить port
свойство nio-listener
из свойств с файлами, но
<afs:nio-listener name="default" port="${ftp.port}"
idle-timeout="60" />
не работает, так как port
определяется в XSD, как xs:int
, Я хотел бы знать, есть ли способ обхода (используя SpEL?), Который позволит мне использовать пространство имен AFS и загрузить свойство порта из файла или из свойств системы.
Я знаю, какие классы соответствует пользовательским тегам, но 'свойство-override' не является решением, так как' port' является конструктором аргумент и не имеет сеттера. Я не уверен, что понимаю ваше другое предложение об отключении проверки в контексте приложения. Не могли бы вы рассказать? Проблема здесь в том, что свойство 'port' объявляется как int не только в xsd, но и в классе java. – Vivek
Я пробовал context.setValidating (false), который работал, но он не работает в BeanDefinitonParser, даже до того, как он попадает в PropertyPlaceholderConfigurer. Причина в том, что BeanDefinitonParser анализирует свойство порта как int вместо того, чтобы передавать его как String для PropertyPlaceholderConfigurer для решения позже. – Vivek
Это приводит к 'java.lang.NumberFormatException: для строки ввода:" $ {ftp.port} "'. Я начинаю думать, что нет простого способа сделать это ... – Vivek