Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Аннотации спринга, по-моему перебор, не? :) / 25 сообщений из 131, страница 1 из 6
14.05.2020, 00:31
    #39957177
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
Я тут код смотрю чужой и вижу такое, а так как всё еще не прочитал книгу или много доков по спрингу не особо уверен, что такое кол-во аннотаций есть гуд:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@Configuration
public class ...

@Autowired
    private ...

 @Bean
    public ...

 @Bean
 @PostConstruct
    public ...



Особенно смущает последняя комбинация :)
Имеет право на жизнь такой код или аннотации перекрывают друг друга?
...
Рейтинг: 0 / 0
14.05.2020, 05:59
    #39957208
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
Nixic
Я тут код смотрю чужой и вижу такое, а так как всё еще не прочитал книгу или много доков по спрингу не особо уверен, что такое кол-во аннотаций есть гуд:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@Configuration
public class ...

@Autowired
    private ...

 @Bean
    public ...

 @Bean
 @PostConstruct
    public ...



Особенно смущает последняя комбинация :)
Имеет право на жизнь такой код или аннотации перекрывают друг друга?


Ну "@Configuration" это грязный класс.
Надо стараться чтобы в нем сосредотачивалась всякая дичь.

Как минимум это лучше, чем писать портянки xml, для настройки Spring-контекста. :-)
...
Рейтинг: 0 / 0
14.05.2020, 18:06
    #39957640
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
Да тут вопрос больше наверное про сочетание:
Код: java
1.
2.
 @Bean
 @PostConstruct 


выглядит реально как дичь

Это тоже странновато:
Код: java
1.
2.
@Autowired
    private


В реальности наверное лучше просто в метод передать этот бин как параметр, а не инжектить во всю конфигурацию.
...
Рейтинг: 0 / 0
15.05.2020, 05:21
    #39957810
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
SpringMan
Да тут вопрос больше наверное про сочетание:
Код: java
1.
2.
 @Bean
 @PostConstruct 


выглядит реально как дичь


Согласен с вами. Это странное аннотирование

SpringMan

Это тоже странновато:
Код: java
1.
2.
@Autowired
    private


В реальности наверное лучше просто в метод передать этот бин как параметр, а не инжектить во всю конфигурацию.


Ну возможно, нужны бины в методе "@PostConstruct"
...
Рейтинг: 0 / 0
15.05.2020, 06:04
    #39957814
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
Nixic
Я тут код смотрю чужой и вижу такое
Код: java
1.
2.
3.
4.
public class ...
метод1... 

метод2... 



Щас мы разберем все полтора миллиона вариантов аннотаций и скажем что метод2 тут явно лишний
)))
...
Рейтинг: 0 / 0
16.05.2020, 11:19
    #39958303
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
Хех, ну да вариантов много. В общем выложу код, переименую класс, чтоб не палиться :) Задача такая - не давать стартовать сервису, если не доступна БД.
Да, меня именно эта связка аннотаций смутила:
@Bean
@PostConstruct
а инжект Environment'а - фиг с ним :)

SomeConfig.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
@Configuration
@EnableTransactionManagement
@EnableCaching
public class SomeConfig {

    private static final Logger LOGGER = LoggerFactory.getLogger(SomeConfig.class);

    @Autowired
    private Environment env;

    @Bean
    @PostConstruct
    public void checkConnection() {
        try {
            HikariConfig config = new HikariConfig();
            config.setMaximumPoolSize(Integer.parseInt(env.getProperty("spring.datasource.hikari.maximum-pool-size")));
            config.setDriverClassName("org.postgresql.Driver");
            config.setJdbcUrl(env.getProperty("spring.datasource.url"));
            config.setUsername(env.getProperty("spring.datasource.username"));
            config.setPassword(env.getProperty("spring.datasource.password"));
            HikariDataSource hikariDataSource = new HikariDataSource(config);
            hikariDataSource.getConnection().getCatalog();
        } catch (Exception ex) {
            LOGGER.error("Не удалось подключиться к БД при старте");
            System.exit(1);
        }
    }
}

...
Рейтинг: 0 / 0
16.05.2020, 11:24
    #39958304
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
Я вообще думаю, что для решения задачи достаточно было в пропертях добавить
spring.datasource.continue-on-error=false
Что и было зделано дополнительно к этому коду.
Но чувак не мог отловить эту ошибку и записать её в лог, чтобы девопсы видели, что пошло не так.
Но вот эта связка... очень смущает.
Наверное есть лучше способ?
...
Рейтинг: 0 / 0
16.05.2020, 22:52
    #39958477
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
Для такого решения достаточно только @PostConstruct. По поводу spring.datasource.continue-on-error=false тут есть. Этот параметр значит: падать, если скрипт инициализации базы успешно не запустился - т.е. придется подложить какой-нить скрипт - тоже не самое красивое, что есть)
Вообще как я понял, у разработчиков этого добра философия такая, что приложение не должно падать, а должно пытаться подключаться до победного

Nixic
Но чувак не мог отловить эту ошибку и записать её в лог, чтобы девопсы видели, что пошло не так.

Вообще звучит как неправда
...
Рейтинг: 0 / 0
17.05.2020, 01:53
    #39958507
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
SpringMan

Вообще как я понял, у разработчиков этого добра философия такая, что приложение не должно падать, а должно пытаться подключаться до победного

Да не, там же System.exit(1);
Приложение вообще без подключения к БД не долго стартовать, на счет того, что оно в рантайме потеряет БД тут оно хоть упадет, хоть нет - не важно, главное, что если упадет, то не принудительно.
...
Рейтинг: 0 / 0
17.05.2020, 04:00
    #39958513
dakeiras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
SpringMan
Для такого решения достаточно только @PostConstruct. По поводу spring.datasource.continue-on-error=false тут есть. Этот параметр значит: падать, если скрипт инициализации базы успешно не запустился - т.е. придется подложить какой-нить скрипт - тоже не самое красивое, что есть)
Вообще как я понял, у разработчиков этого добра философия такая, что приложение не должно падать, а должно пытаться подключаться до победного

Nixic
Но чувак не мог отловить эту ошибку и записать её в лог, чтобы девопсы видели, что пошло не так.

Вообще звучит как неправда

Вы про подключение к базе? Не, такое не поддерживается в Спринге сейчас.

Вот ссылка на обсуждение и на мой коммент (ник apriamostanov): https://github.com/spring-projects/spring-boot/issues/4779#issuecomment-501242970

Он не просто не стартует если базы нет, но и падает если например базу перезагрузили.

Идея в том чтобы отлавливать восстановимые ошибки при коннекте к базе и ждать их восстановления.

Сейчас это не поддерживается в Спринге
...
Рейтинг: 0 / 0
17.05.2020, 10:44
    #39958527
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
Я фигею.
Спринг уже аннотациями базу захватил?
Тут есть хоть один у кого рабочий проект с этим делом?
...
Рейтинг: 0 / 0
17.05.2020, 10:51
    #39958529
Аннотации спринга, по-моему перебор, не? :)
Потому что спринг пора закопать. Иначе рискуете, что ваш проект начнет жить своей жизнью, независимо от вас, и ничего хорошего из этого разумеется не выйдет. Думать надо, и архитектуру разрабатывать головой, а не спрингом.
...
Рейтинг: 0 / 0
17.05.2020, 11:01
    #39958532
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
Nixic
SpringMan

Вообще как я понял, у разработчиков этого добра философия такая, что приложение не должно падать, а должно пытаться подключаться до победного

Да не, там же System.exit(1);
Приложение вообще без подключения к БД не долго стартовать, на счет того, что оно в рантайме потеряет БД тут оно хоть упадет, хоть нет - не важно, главное, что если упадет, то не принудительно.

Не так выразился. Философия у сприговцев, не у создателя приложения

dakeiras

Он не просто не стартует если базы нет, но и падает если например базу перезагрузили.

Специально сейчас проверил: приложение нормально стартует, если нет базы. У ТС-а уже противоположная проблема
...
Рейтинг: 0 / 0
17.05.2020, 11:12
    #39958535
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
PetroNotC Sharp
Я фигею.
Спринг уже аннотациями базу захватил?
Тут есть хоть один у кого рабочий проект с этим делом?

Ну там возможность только запустить sql скрипт при старте приложения или flayway/liquidbase скрипты - магии особой нет
...
Рейтинг: 0 / 0
17.05.2020, 11:22
    #39958536
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
SpringMan
PetroNotC Sharp
Я фигею.
Спринг уже аннотациями базу захватил?
Тут есть хоть один у кого рабочий проект с этим делом?

Ну там возможность только запустить sql скрипт при старте приложения или flayway/liquidbase скрипты - магии особой нет

Не понял архитектуру и замысел.
Если так как ты написал, тогда это походит на выполнение скрипта из html.
...
Рейтинг: 0 / 0
17.05.2020, 11:24
    #39958537
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
>или flayway/liquidbase скрипты
= спринг знает про эти либы? Есть include какие то что ли о данных форматах?
...
Рейтинг: 0 / 0
17.05.2020, 11:27
    #39958538
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
PetroNotC Sharp
>или flayway/liquidbase скрипты
= спринг знает про эти либы? Есть include какие то что ли о данных форматах?

Ужос....
Почитал. Спринг и туда добрался.
Круто))
...
Рейтинг: 0 / 0
17.05.2020, 11:29
    #39958539
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
По сабжу - аннотации спринга = перебор.
Прогеру трудно выбирать, где они нужны и где не нужны.
Так как аннотирование превратилось в программирование.
...
Рейтинг: 0 / 0
17.05.2020, 11:35
    #39958540
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
PetroNotC Sharp

Не понял архитектуру и замысел.
Если так как ты написал, тогда это походит на выполнение скрипта из html.

По сути да. Такой же подход (создание базы из приложения) есть в hibernate, groovy on grails, ruby on rails и т.п. Это всего лишь возможность для особых случаев, никто не обязует так делать всегда
...
Рейтинг: 0 / 0
17.05.2020, 11:39
    #39958541
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
SpringMan,
Ну, могу сказать про хибер. Эта фича у него естественна.
Вот и получается что спринг нагло влез на территорию хибера.
Ну а Ruby вроде к java не имеет отношения.
...
Рейтинг: 0 / 0
17.05.2020, 11:46
    #39958547
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
PetroNotC Sharp,

Тут имхо не важно хибер/руби или что там еще. Главное выбрать подход: создавать базу во время старта приложения или накатывать скрипты отдельно. Лично мне вообще не спокойно, если хиберу давать делать какие-то ddl операции. Кто знает, что он там начнет делать в случае обновления версий и т.п. - sql скрипты прозрачнее
...
Рейтинг: 0 / 0
17.05.2020, 12:01
    #39958550
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
SpringMan,
ЗАДАЧА: Создать БД (тестовая?) во время старта ВЕБ ПРИЛОЖЕНИЯ (сервиса?)
......
Тут столько вопросов сразу возникает по уточнению ТЗ.
Что невольно спрашиваешь, нахрена тут спринг лезет вообще со своей аннотацией?
...
Рейтинг: 0 / 0
17.05.2020, 12:37
    #39958557
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
PetroNotC Sharp,

Для создания базы при старте приложения вообще не надо никаких аннотаций, это решается на уровне конфигураций. Создание базы и аннотации ТС-а это не связанные проблемы (ТС захотел просто использовать spring.datasource.continue-on-error = false, а это не совсем о его проблеме)
...
Рейтинг: 0 / 0
17.05.2020, 12:53
    #39958564
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
Nixic

Особенно смущает последняя комбинация :)
Имеет право на жизнь такой код или аннотации перекрывают друг друга?

Поскольку декларативная наука "программирование на аннотациях" еще не сформировалась,
как отдельная отрасль - нам придется решать вопросы приоритета процессинга аннотаций
особенно если процессоров более чем один. Я думаю что это выльеться как минимум еще
в один язык программирования или мета-язык. И где-то на последних этапах переосмысления
мы придем вопросу принципиальной невозможности решать эти проблемы на мета-языке
и нам потребуется не мета-язык а ПОЛНОЦЕННЫЙ язык пре-процессинга наподобие языка
разработки. Или создадим язык-в-языке.
...
Рейтинг: 0 / 0
17.05.2020, 13:25
    #39958572
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аннотации спринга, по-моему перебор, не? :)
SpringMan,
Аннотация это конфигурирование на сегодняшний день.
Или декларативное программирование.
Поэтому фраза: "не надо аннотаций но надо конфигурации"
вообще запутывает честного программиста.
А я говорил еще шире - какого рожна спринг лезет в базу. Хоть и скриптами?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Аннотации спринга, по-моему перебор, не? :) / 25 сообщений из 131, страница 1 из 6
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]