Незнаю какую версию Spring Boot использует автор, но начиная с версии 2.1 вы можете не ставить аннотацию @RunWith так как она уже содержится внутри @SprimgBootTest.
Мне кажется мы с вами говорим о разных вещах, если отбросить примитивы long double, можете мне объяснить что по по вашему значит не атомарное чтение или запись например int или String?
Вы правы насчет примитивных double и long, но это скорее исключение. Все остальные операции чтения и записи атомарны и без волатайл.
Еще раз, happens-before это не про атомарность, это про видимость значения. Волатайл обеспечивает видимость, но не атомарность.
Жаль конечно что рекорды так странно сделали. Неужели нельзя было взять синтаксис полей. А то конечно для трех инт переменных x y z выглядит красиво, но десяток полей с классами в спринг стиле будут смотреться достаточно громоздко.
Заметил одно очстранное поведение, если выташить таб с открытым классом с помошью shift + f4 из основного окна, то при нажатии в окне с деревом проекта на иконку которая показывает местоположение файла в проекте. Она будет всегда орентироваться на основное окно, а не то которое мы открыли и выташили из основного.
Во время компиляции компилятор проходит через 5-7 этапов (не помню точно) начиная с parse где происходит чтение исходников и заканчивая на generate где он генерирует class файлы, дак вот, можно вмешатся в некоторые стадии этого процесса и получить нужны нам class файл. Чтобы сделать это, необходимо имплементировать интерфейс Plugin.
Очевидно кому? Марине? Полиции это вряд ли очевидно.
А зачем столько миграций, первые несколько сотен разве нельзя смержить? Да и откат в случае проблем все равно будет вперёд идти.
Не так уж и много если использовать Mapstruct и Lombok. Хотя решение автора с валидацией в интерфейсе довольно элегантное.
Ну можно было master/slave ведь использовать.
Может стоит оставить ссылку на первоисточник и указать что это перевод?
https://reflectoring.io/validate-spring-boot-configuration-parameters-at-startup/
Ну может дело в том что за линукс не нужно платить?
Незнаю какую версию Spring Boot использует автор, но начиная с версии 2.1 вы можете не ставить аннотацию @RunWith так как она уже содержится внутри @SprimgBootTest.
А в чем ее плюс для тех кто не использует JavaFx?
Спасибо, но как это противоречит моему определению атомарности?
Мне кажется мы с вами говорим о разных вещах, если отбросить примитивы long double, можете мне объяснить что по по вашему значит не атомарное чтение или запись например int или String?
Вы правы насчет примитивных double и long, но это скорее исключение. Все остальные операции чтения и записи атомарны и без волатайл.
Еще раз, happens-before это не про атомарность, это про видимость значения. Волатайл обеспечивает видимость, но не атомарность.
Извините, но чтение или запись и так являются атомарными операциями и без волатайл. Волатайл нам дает слабую синхронизацию, но не атомарность.
Нет не делает, i++ волатайл не являются атомарной операцией в отличии от AtomicInteger с его методом incrementAndGet
Почему декларирование полей в рекорде сделано после имени в скобках, а не в виде полей.
Например:
record MyRecord {
Int x
String str
}
Жаль конечно что рекорды так странно сделали. Неужели нельзя было взять синтаксис полей. А то конечно для трех инт переменных x y z выглядит красиво, но десяток полей с классами в спринг стиле будут смотреться достаточно громоздко.
Я думаю это не аам решать, но не переживайте ответственный товарищь Ма*ор разберётся.
Заметил одно очстранное поведение, если выташить таб с открытым классом с помошью shift + f4 из основного окна, то при нажатии в окне с деревом проекта на иконку которая показывает местоположение файла в проекте. Она будет всегда орентироваться на основное окно, а не то которое мы открыли и выташили из основного.
Всегда.
Может вы путаете с "один файл исходного кода, один публичный класс"
Вот после таких деятелей, боящихся уровней стека, приходится дебажить методы на 15к строк кода с одним ретерном в конце.
Во время компиляции компилятор проходит через 5-7 этапов (не помню точно) начиная с parse где происходит чтение исходников и заканчивая на generate где он генерирует class файлы, дак вот, можно вмешатся в некоторые стадии этого процесса и получить нужны нам class файл. Чтобы сделать это, необходимо имплементировать интерфейс Plugin.
https://docs.oracle.com/javase/8/docs/jdk/api/javac/tree/com/sun/source/util/Plugin.html