Nano Hash - криптовалюты, майнинг, программирование

Как получить доступ к свойствам весенней загрузки из шаблона freemarker

Моя проблема очень проста:

В моем веб-приложении с весенней загрузкой у меня есть некоторые свойства, связанные с env, о которых должна знать передняя/клиентская сторона (скажем, удаленный URL-адрес CORS для вызова, который зависит от env).

Я правильно определил файлы application-{ENV}.properties, и все механизмы per-env-props работают нормально.

Вопрос, на который я не могу найти ответ, заключается в следующем: как вы позволяете своему контексту freemarker знать о вашем файле свойств, чтобы иметь возможность вводить их (в частности, в приложение с весенней загрузкой). Это, вероятно, очень просто, но я не могу найти ни одного примера...

Спасибо,


  • Дубликат этого? stackoverflow.com/questions/15302775/ 25.01.2016
  • нет, это конкретно в весенней загрузке (также известной как все-настраивается-автоматически-без-спрашивая-я-окружение), а не в чистом весеннем MVC 25.01.2016

Ответы:


1

Сам себе отвечу:

Самый простой способ в spring-boot 1.3 - переопределить класс FreeMarkerConfiguration:

/**
 * Overrides the default spring-boot configuration to allow adding shared variables to the freemarker context
 */
@Configuration
public class FreemarkerConfiguration extends FreeMarkerAutoConfiguration.FreeMarkerWebConfiguration {

    @Value("${myProp}")
    private String myProp;

    @Override
    public FreeMarkerConfigurer freeMarkerConfigurer() {
        FreeMarkerConfigurer configurer = super.freeMarkerConfigurer();

        Map<String, Object> sharedVariables = new HashMap<>();
        sharedVariables.put("myProp", myProp);
        configurer.setFreemarkerVariables(sharedVariables);

        return configurer;
    }
}
25.01.2016
  • Это немного полезно, но я спрашиваю себя, есть ли лучшее решение, которое автоматически применяет все свойства из моего application.properties в дополнение к тому, что я делаю вручную в этом методе. 14.01.2018
  • Как получить это свойство myProp в файле .ftl? 03.10.2018
  • @XingLee Вы выяснили, как получить это свойство? я бы тоже хотела знать хахаха 18.03.2020

  • 2

    Один из вариантов весенней загрузки 2:

    @Configuration
    public class CustomFreeMarkerConfig implements BeanPostProcessor {
    
      @Value("${myProp}")
      private String myProp;
    
      @Override
      public Object postProcessBeforeInitialization(Object bean, String beanName)
      throws BeansException {
          if (bean instanceof FreeMarkerConfigurer) {
              FreeMarkerConfigurer configurer = (FreeMarkerConfigurer) bean;
              Map<String, Object> sharedVariables = new HashMap<>();
              sharedVariables.put("myProp", myProp);
              configurer.setFreemarkerVariables(sharedVariables);
          }
          return bean;
      }
    }
    

    Spring Boot 2.x изменил структуру классов, поэтому больше нельзя создавать подклассы и сохранять автоматическую настройку, как это было возможно в Spring Boot 1.x.

    09.10.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..