Файл конфигурации Spring импорта на основе свойства в .properties файле

Я не уверен, насколько застрявший Вы:

у Вас должен быть веб-сервер (Windows идет с тем под названием IIS, но он не может быть установлен)

  1. , Удостоверяются, что Вам на самом деле установили IIS! Попытайтесь ввести http://localhost/ в Вашем браузере и посмотрите то, что происходит. Если ничего не происходит, это означает, что Вы можете не устанавливать IIS. См. Устанавливать IIS
  2. Настроенный IIS , Как запустить Ваш первый веб-сайт IIS
  3. , Вам, возможно, даже понадобится к [1 113] Установка Платформа.NET (или Ваш сервер будет только служить статическим страницам HTML и не страницам asp.net)

Установка Вашего приложения

, Как только Вы сделали это, можно более или менее просто скопировать приложение в c:\wwwroot\inetpub\. Читайте Устанавливающие Приложения ASP.NET (IIS 6.0) для получения дополнительной информации

Доступ к веб-сайту от другой машины

В теории, как только у Вас есть выполнение веб-сервера и установленное приложение, Вам только нужно IP address из Вашего веб-сервера для доступа к приложению.

Для нахождения попытки IP-адреса: Start-> Run-> тип cmd (совершает нападки ENTER)-> тип ipconfig (совершает нападки ENTER)

Однажды

  • у Вас есть IP-адрес И
  • выполнение IIS И
  • , приложение установлено

, можно получить доступ веб-сайту от другой машины в LAN, просто введя в IP-адресе Вас веб-сервер и корректный путь к Вашему приложению.

при помещении приложения в каталог, названный NewApp необходимо будет ввести что-то как [1 110]

, Выключают брандмауэр

, Если у Вас действительно есть брандмауэр, выключают его, в то время как Вы пытаетесь соединиться впервые, можно уладить это позже.

34
задан nash2000 6 October 2009 в 06:37
поделиться

5 ответов

В Spring JIRA есть старая проблема с добавлением поддержки заполнителя свойств для импорта (SPR-1358) , которая была решена как " Не исправить », но с тех пор было предложено решение с использованием EagerPropertyPlaceholderConfigurer.

Я лоббировал повторное открытие SPR-1358, но пока ответа не получил. Возможно, если бы другие добавили свои варианты использования в комментарии к проблеме, это помогло бы повысить осведомленность.

5
ответ дан 27 November 2019 в 17:14
поделиться

Это, к сожалению, намного сложнее, чем должно быть. В моем приложении я добился этого, выполнив следующие действия:

  1. Небольшой контекст "начальной загрузки", который отвечает за загрузку bean-компонента PropertyPlaceholderConfigurer и другого bean-компонента, который отвечает за загрузку контекста приложения.

  2. Второй bean-компонент, упомянутый выше, принимает как входные "настоящие" файлы контекста Spring для загрузки. Мои файлы контекста Spring организованы так, что настраиваемая часть хорошо известна и находится в одном месте. Например, у меня может быть 3 файла конфигурации: one.onpremise.xml, one.hosted.xml, one.multitenant.xml. Компонент программно загружает эти файлы контекста в текущий контекст приложения.

Это работает, поскольку файлы контекста указаны в качестве входных данных для компонента, ответственного за их загрузку. Это не сработает, если вы просто попытаетесь выполнить импорт, как вы упомянули, но это имеет тот же эффект с немного большей работой. Класс начальной загрузки выглядит примерно так:

 public class Bootstrapper implements ApplicationContextAware, InitializingBean {

    private WebApplicationContext context;
    private String[] configLocations;
    private String[] testConfigLocations;
    private boolean loadTestConfigurations;

    public void setConfigLocations(final String[] configLocations) {
        this.configLocations = configLocations;
    }

    public void setTestConfigLocations(final String[] testConfigLocations) {
        this.testConfigLocations = testConfigLocations;
    }

    public void setLoadTestConfigurations(final boolean loadTestConfigurations) {
        this.loadTestConfigurations = loadTestConfigurations;
    }

    @Override
    public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
        context = (WebApplicationContext) applicationContext;
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        String[] configsToLoad = configLocations;

        if (loadTestConfigurations) {
            configsToLoad = new String[configLocations.length + testConfigLocations.length];
            arraycopy(configLocations, 0, configsToLoad, 0, configLocations.length);
            arraycopy(testConfigLocations, 0, configsToLoad, configLocations.length, testConfigLocations.length);
        }

        context.setConfigLocations(configsToLoad);
        context.refresh();
    }
}

В основном, получить контекст приложения, установить его расположение в конфигурации и указать ему обновить себя. Это отлично работает в моем приложении.

Надеюсь, это поможет.

15
ответ дан 27 November 2019 в 17:14
поделиться

Почему бы и нет:

  1. прочитать файл свойств при запуске
  2. , который определит, какую конфигурацию Spring загружать
  3. в зависимости от того, какая Spring config is loaded устанавливает определенные вещи, затем загружает общую конфигурацию Spring

, так что вы эффективно инвертируете свое текущее предложенное решение.

2
ответ дан 27 November 2019 в 17:14
поделиться

Добавьте что-то похожее на следующее:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="ignoreResourceNotFound"><value>true</value></property>
    <property name="locations">
        <list>
            <value>classpath:propertyfile.properties</value>
        </list>
    </property>
</bean>
1
ответ дан 27 November 2019 в 17:14
поделиться

Если то, что вы хотите, это указать импортированное имя файла XML снаружи ApplicationContext.xml, чтобы вы могли бы заменить ApplicationContext.xml, не теряя конфигурацию импортированного пути файла XML, вы можете просто добавить промежуточный файл XML Fear Beans, скажем, , confselector.xml, так что Imports intaxtcontextext.xml confselector.xml и confselector.xml содержит только элемент , который ссылается на подходящие пользовательские файлы xml beans.

Другое средство, которое может быть использовано, представляет собой XML-объекты (определенные добавлением элементов в объявление DTD в начале XML). Они позволяют импортировать фрагменты XML из других файлов и предоставляют функциональность «Post Plactholder» для любого файла XML.

Ни одно из этих решений не позволяет вам иметь файл конфигурации в формате java .properties, хотя.

1
ответ дан 27 November 2019 в 17:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: