Не удается прочитать значение файла application.properties с помощью context: property-placeholder при весенней загрузке

Я использую файл application.properties для общих конфигураций, которые я собираюсь создать позже, на основе профиля. Теперь я использую другой файл конфигурации root-context.xml, в котором настроен клиентский компонент jaxws. Я хочу передать адрес конечной точки для этой конфигурации bean-компонента из файла application.properties, используя заполнитель свойства контекста, но он вызывает следующую ошибку:

Caused by: java.io.IOException: java.net.URISyntaxException: Illegal character in path at index 1: ${sample_endpoint}

Вот структура проекта

структура проекта

Вот моя конфигурация SRC / основные / ресурсы / application.properites

config.monitor.dir=C:/Users/xxx/Documents/resources/artifacts
application.config.file.name=application-config
sample_endpoint=http://xx.x.x/sampleInquiry/01

SRC / основные / ресурсы / корень-context.xml

<?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:jee = "http://www.springframework.org/schema/jee"
    xmlns:tx = "http://www.springframework.org/schema/tx" xmlns:p = "http://www.springframework.org/schema/p"
    xmlns:jaxws = "http://cxf.apache.org/jaxws" xmlns:context = "http://www.springframework.org/schema/context"
    xmlns:cxf = "http://cxf.apache.org/core"
    xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
       http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
       http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


    <context:property-placeholder location = "classpath:application.properties"/>

    <bean id = "messagesSource"
        class = "org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name = "basenames">
            <list>

                <value>file:${config.monitor.dir}/${application.messages.file.name}
                </value>
            </list>
        </property>
        <property name = "cacheSeconds" value = "30" />
        <property name = "defaultEncoding" value = "UTF-8" />
    </bean>

    <bean id = "messages"
        class = "com.project.microservices.sampleproject.config.Messages"
        scope = "application">
        <property name = "messagesSource" ref = "messagesSource" />
    </bean>


    <jaxws:client id = "sampleClient" serviceClass = "com.sample.wsdl.sampleInq"
        address = "${sample_endpoint}">

        <jaxws:inInterceptors>
            <bean class = "org.apache.cxf.interceptor.LoggingInInterceptor" />
            <!-- <ref bean = "loggingInInterceptor" /> -->
        </jaxws:inInterceptors>
        <jaxws:outInterceptors>
            <bean class = "org.apache.cxf.interceptor.LoggingOutInterceptor" />
            <!-- <ref bean = "loggingOutInterceptor" /> -->
            <bean class = "org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
                <constructor-arg>
                    <map>
                        <entry key = "action" value = "UsernameToken" />
                        <entry key = "user" value = "website" />
                        <entry key = "user" value = "website" />
                        <entry key = "passwordType" value = "PasswordText" />
                        <entry key = "passwordCallbackRef" value-ref = "myPasswordCallback" />
                    </map>
                </constructor-arg>
            </bean>
        </jaxws:outInterceptors>
    </jaxws:client>

основной класс

@SpringBootApplication
public class SampleApplication extends SpringBootServletInitializer implements WebApplicationInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SampleApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(SampleApplication.class, args);

    }
}

также одна точка, приложение может разрешить значение file: $ {config.monitor.dir} / $ {application.messages.file.name} в корневом контексте, но не в адресе конечной точки. что мне здесь не хватает? любезно помогите. я использую загрузочную версию 1.5.17

пожалуйста, вставьте больше кода, например: ваше приложение весенней загрузки и структура вашего проекта

clevertension 24.10.2018 11:33

обновил вопрос с дополнительным блоком кода. пожалуйста, проверьте.

Reese 24.10.2018 12:13

код вашего весеннего приложения, у которого есть метод main (String args [])?

clevertension 24.10.2018 13:12

@clevertension я добавил основной класс .. пожалуйста, проверьте один раз

Reese 24.10.2018 13:37

попробуйте удалить <context: property-placeholder ... в вашем xml, весенняя загрузка автоматически прочитает эти свойства

clevertension 24.10.2018 14:44

изначально <context: property-placeholder не был назначен .. все же boot не выбрал свойство .. однако, поскольку я заменил заполнитель на # {environment ['sample_endpoint']}, он начал работать. знаете ли вы причину, по которой это выражение EL подобрано, но не конфигурация заполнителя? в любом случае большое спасибо за изучение вопроса

Reese 24.10.2018 15:05
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
6
765
0

Другие вопросы по теме