Spring Boot отказывается отбирать свойства теста приложения [дубликат]

вы можете использовать

$('.buttons').on('click', 'button', function(){
    // your magic goes here
});

или

$('.buttons').delegate('button', 'click', function() {
    // your magic goes here
});

, эти два метода эквивалентны, но имеют другой порядок параметров.

см .: Событие делегата jQuery

10
задан turoni 25 March 2017 в 22:04
поделиться

3 ответа

Использование внешних файлов свойств

Ответ лежит на весенних загрузочных документах, я попытаюсь сломать их для вас.

Прежде всего, нет, вы не должны использовать @PropertySource при работе с конфигурацией Ямля, как упоминается здесь в недостатках Ямла :

Файлы YAML не могут быть загружены через аннотацию @PropertySource. Таким образом, в случае, когда вам нужно загрузить значения таким образом, вам нужно использовать файл свойств.

Итак, как загружать нужные файлы? Это объясняется здесь Файлы свойств приложения

Один загружен для вас: application.yml, поместите его в одну из каталогов, как указано в ссылке выше. Это отлично подходит для вашей общей конфигурации.

Теперь для вашей конкретной конфигурации (и таких как пароли) вы хотите использовать внешние файлы свойств, как это сделать, также объясняется в этом разделе:

Если вам не нравится application.properties в качестве имени файла конфигурации, вы можете переключиться на другой, указав свойство среды spring.config.name. Вы также можете обратиться к явному местоположению, используя свойство среды spring.config.location (список разделов, разделенных запятыми, или пути к файлам).

Таким образом, вы используете среду spring.config.location имущество. Представьте, что у вас есть внешний файл конфигурации: application-external.yml в conf / dir в вашем домашнем каталоге, просто добавьте его следующим образом: -Dspring.config.location=file:${home}/conf/application-external.yml в качестве параметра запуска вашей JVM. Если у вас несколько файлов, просто разделите их запятой. Обратите внимание, что вы можете легко использовать внешние свойства, подобные этому, чтобы перезаписать свойства, а не просто добавлять их.

Я бы посоветовал проверить это, заставив ваше приложение работать только с вашим внутренним файлом application.yml, а затем перезаписать свойство (test) в вашем файле внешних свойств и зарегистрировать его значение где-нибудь.

Привязать свойства Ямля к объектам

При работе с свойствами Ямла я обычно загружаю их с помощью @ConfigurationProperties , что отлично подходит для работы с примерами списков или более сложной структурой свойств. (Вот почему вы должны использовать свойства Yaml, для простых свойств вы, возможно, лучше используете обычные файлы свойств). Прочтите это для получения дополнительной информации: Свойства конфигурации типа Safe

Дополнительно: загрузка этих свойств в тесте IntelliJ, Maven и JUnit

Иногда вы хотите загрузить эти свойства в ваших сборках maven или при выполнении тестов. Или просто для локального развития с вашей IDE

Если вы используете IntelliJ для разработки, вы можете легко добавить это, добавив его в свою конфигурацию Run Tomcat: «Запустить» -> «Изменить конфигурации», выберите конфигурацию запуска в «Сервер Tomcat», проверьте вкладку «Сервер» и добавьте ее в «Параметры VM».

Чтобы использовать внешние файлы конфигурации в своей сборке Maven: настройте плагин maven surefire, как это, в вашем pom.xml:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
     <argLine>-Dspring.config.location=file:${home}/conf/application-external.yml
   </configuration>
</plugin>    

При запуске тестов JUnit в IntelliJ:

  • Run → Edit Configurations
  • По умолчанию → JUnit
  • добавить параметры VM -> -ea -Dspring.config.location=file:${home}/conf/application-external.yml
16
ответ дан loïc 18 August 2018 в 17:29
поделиться
  • 1
    @ loїc Отличный ответ! Я сожалею, что не могу поставить больше одного взлета) – Volodymyr Bakhmatiuk 18 May 2018 в 09:12

Да, вам нужно использовать @PropertySource, как показано ниже.

Важным моментом здесь является то, что вам необходимо предоставить свойство application_home (или выбрать любое другое имя) в качестве переменной окружения ОС или System или вы можете передать аргумент командной строки при запуске Spring boot. Это свойство указывает, где находится файл конфигурации (.properties или .yaml) (например: /usr/local/my_project/ и т. Д.)

@Configuration
@PropertySource("file:${application_home}config.properties")//or specify yaml file
@ComponentScan({"be.ugent.lca","be.ugent.sherpa.configuration"})
@EnableAutoConfiguration
@EnableSpringDataWebSupport
public class Application extends SpringBootServletInitializer{
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
5
ответ дан developer 18 August 2018 в 17:29
поделиться
  • 1
    Итак, $ application_home должен содержать каталог, содержащий мой .yml? Я добавил, к чему это относится, вот где мой .yml-файл (и война). – turoni 25 March 2017 в 22:08
  • 2
    да, вы правы ... установите переменную среды ОС Windows, как application_home=C:\\myproject (или любую другую переменную ОС) – developer 25 March 2017 в 22:10
  • 3
    Странно, вот как я это сделал. Любая идея, почему она все еще не может разрешить мою собственность? – turoni 25 March 2017 в 22:20
  • 4
    я заметил, что в предыдущей строке вы говорите, что $application_home, что неверно, не префикс $ в переменной ОС, он требуется только в классе java как часть языка Spring Expression – developer 25 March 2017 в 22:22
  • 5

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

@PropertySource({"classpath:omnicell-health.properties"})

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

@Autowired
    private Environment env;
-2
ответ дан Faysal Ahmed 18 August 2018 в 17:29
поделиться
Другие вопросы по тегам:

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