Как установить профили по умолчанию в Thorntail 2.4

В этом мире нет ничего прекрасного. Возможно, они ожидали большего практического подхода.

Но после вашего объяснения вы могли бы добавить эти строки несколько иначе.

  1. Интерфейсы - это правила (правила, потому что вы должны дать им реализацию, которую вы не можете игнорировать или избегать, чтобы они навязывались как правила), который работает как общий документ понимания между различными командами в разработке программного обеспечения.
  2. Интерфейсы дают представление о том, что нужно делать, но не о том, как это будет сделано. Таким образом, реализация полностью зависит от разработчика, следуя заданным правилам (означает заданную подпись методов).
  3. Абстрактные классы могут содержать абстрактные объявления, конкретные реализации или и то, и другое.
  4. Абстрактные объявления похожи на правила, которым необходимо следовать, а конкретные реализации - как рекомендации (вы можете использовать его как есть или вы можете игнорировать его, переопределяя и предоставляя ему свою собственную реализацию).
  5. Кроме того, какие методы с одной и той же сигнатурой могут изменять поведение в другом контексте, предоставляются как объявления интерфейса в качестве правил для реализации соответственно в разных контекстах.

Редактирование: Java 8 облегчает определение стандартных и статических методов в интерфейсе.

public interface SomeInterfaceOne {

    void usualAbstractMethod(String inputString);

    default void defaultMethod(String inputString){
        System.out.println("Inside SomeInterfaceOne defaultMethod::"+inputString);
    }
}

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

Если у нас есть другой интерфейс со следующими методами:

public interface SomeInterfaceTwo {

    void usualAbstractMethod(String inputString);

    default void defaultMethod(String inputString){
        System.out.println("Inside SomeInterfaceTwo defaultMethod::"+inputString);
    }

}

Java не позволяет расширять несколько классов, потому что это приводит к задаче «Diamond», где компилятор не может решить, какой метод суперкласса использовать. С помощью методов по умолчанию проблема с алмазами будет возникать и для интерфейсов. Потому что, если класс реализует как

SomeInterfaceOne and SomeInterfaceTwo

, так и не реализует общий метод по умолчанию, компилятор не может решить, какой из них выбрать. Чтобы избежать этой проблемы, в java 8 обязательно применять общие методы по умолчанию для разных интерфейсов. Если какой-либо класс реализует оба вышеуказанных интерфейса, он должен обеспечить реализацию метода defaultMethod (), иначе компилятор будет вызывать ошибку времени компиляции.

-1
задан Anthon 29 March 2019 в 13:27
поделиться

1 ответ

1114 Колючий хвост не может знать, в какой среде он работает. Само назначение профилей конфигурации заключается в том, что вы управляете тем, какая конфигурация применяется. Если у вас есть идея, как "локальная" среда может быть надежно (!) Обнаружена, я думаю, это было бы отличным запросом функции.

Тем не менее, кажется странным, что Cloud Foundry не позволит вам настроить команду, которая используется для запуска приложения. Согласно http://cli.cloudfoundry.org/en-US/cf/push.html , вы можете использовать аргумент -c для настройки команды.

Это кажется довольно низким уровнем, так что вот еще один вариант. В дополнение к аргументам -s и -S вы можете использовать системные свойства thorntail.project.stage.file и thorntail.project.stage. Здесь вы можете установить thorntail.project.stage, что примерно эквивалентно -S. В https://github.com/cloudfoundry/java-buildpack/blob/master/docs/framework-java_opts.md вы можете установить произвольные системные свойства, создав переменную среды JAVA_OPTS. [1116 ]

То есть, если вы переключили project-defaults.yml на локальные настройки (используя H2) и создали, например, project-cloud.yml с производственными настройками (с использованием PostgreSQL) было бы достаточно создать переменную среды JAVA_OPTS="-Dthorntail.project.stage=cloud" в Cloud Foundry.

0
ответ дан Ladicek 29 March 2019 в 13:27
поделиться
Другие вопросы по тегам:

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