Ссылка на значение из весеннего конфига

Сначала немного информации о настройке:

У меня есть мультитенантное приложение на основе пружин. Многопользовательская библиотека поддержки - это инструмент, разработанный моей компанией, и я должен использовать его. Как это работает, так это то, что перед сервлетом для приложения устанавливается перехватчик. По запросу, попавшему в сервлет, он загружает конфигурацию пружины, специфичную для арендатора, для "материала", необходимого для арендатора, указанного в URL, попадающем в сервлет.

Как уже говорилось, выше всего лишь немного фона. Теперь к вопросу / вопросу:

Что я хочу сделать, так это создать в загруженной конфигурации клиента значение, которое я могу использовать для ввода в нужное место. Итак, есть ли способ, которым я могу просто определить константу в конфигурации весны, а затем ссылаться на нее через @Value или же @Resource в коде Java?

За этим не будет никакой реализации bean-компонента, это будет просто и только ключ / значение, на которое я могу ссылаться, когда это необходимо в моем приложении по имени. Итак, что-то с эффектом:

<bean name="MyIdentifier">
    <property name="theId" value="1001" />
</bean>

И тогда я могу сделать что-то подобное?

@Value{MyIdentifier.theId}
String theId;

И пусть Spring осознает и внедрит ценность. Проблема в том, что, выполняя что-то похожее на Spring, жалуется, что для bean-компонента нет реализации. Обратите внимание, класс не указан для компонента. Причина, по которой я хочу это сделать, заключается в том, что каждый файл конфигурации арендатора будет содержать этот компонент, но фактическое значение будет отличаться для каждого клиента.

Есть ли какой-либо другой тип для использования в конфигурации, чтобы сделать это? Если да, то какие схемы должны быть в конфиге?

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

1 ответ

Решение

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

Создайте файл свойств, как показано ниже:

application.properties

theId=1001

Загрузите файл свойств в вашей конфигурации:

 <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
        <property name="locations">
          <list>
            <value>classpath:application.properties</value>
          </list>
        </property>
      </bean>

И получить доступ к собственности в вашем конкретном классе:

  @Value("${theId}")
    String theId;
Другие вопросы по тегам