Size: a a a

Spring Framework and more

2019 January 25

А

Артем Артемович Артемовский in Spring Framework and more
"Еще не понял. На новый проект пришел." очень сильная фраза
источник

A

Andrii in Spring Framework and more
Такой вопрос - есть огромный проэкт(спринг), с тоннами легаси кода. Документации мало. Посоветуйте инструменты/литературу   - как вычленять из него бизнес-логику?
источник

PB

Pavel Bukhmatov in Spring Framework and more
Evgeny Ageev
И такой вопрос. Если клиентский адрес закрыть не могу, могу закрыть адрес, куда стучится AJAX - /timesheet-salary. Только вопрос - как сконфигурить? Или как раз с помощью @PreAuthorize на метод? И придется писать свои контроллер и сервис вместо встроенных вещей?
Это зависит от того, как оно сейчас работает.
1) У тебя есть фронтенд. На фронте можно что-то закрыть через монитроинг window.location. Некоторые фронт-фреймворки эту проблему решают за тебя (Например в англуляре есть интерфейс CanActivate, который можно в роутер привязать и не давать переходить на страницу)

2) Когда фронтенд страничка грузится, она наверное дергает бекенд с какими-то запросами.

3) На бекенде надо по запросу пользователя найти что-то, из-за чего решить - вернуть пользователю нормальный результат или какой-нибудь 401.
Чтобы это делать, для начала надо понять, каким образом обрабатываются на бекенде запрос от клиента. Если там какая-то автогенерация - понять откуда её ноги растут.
А дальше уже смотреть, как ограничить какие-то  из запросов.
В простом мире - это spring-web + spring-security к моменту исполнения запроса уже заполнен SecurityContextHolder, т.е. понятно, кем является пользователь, и там хоть через PreAuthorize, хоть руками можно что-то делать. У тебя походу не самый простой случай. Надо понять какой.
источник

ЕБ

Евгений Боровов in Spring Framework and more
Andrii
Такой вопрос - есть огромный проэкт(спринг), с тоннами легаси кода. Документации мало. Посоветуйте инструменты/литературу   - как вычленять из него бизнес-логику?
всё что не спринг — бизнес-логика :)
А вообще надо знать бизнес-локигу прежде чем её вычленять, а то можно такого наделать...
источник

A

Andrii in Spring Framework and more
самое страшное - макаронины бизнес-логики залезли даже в Сеттеры бинов)
источник

ЕБ

Евгений Боровов in Spring Framework and more
Обычно советуют DDD почитать, но может боком выйти особенно в легаси.
Описывается объектаная модель домена (бизнес логики) без привязки в фрейворкам, а спринг как контролер вьюх остаётся.
Гексагоны там всякие намутить...
источник

ЕБ

Евгений Боровов in Spring Framework and more
Боба Мартина Чистая архитектура
источник

PB

Pavel Bukhmatov in Spring Framework and more
Andrii
Такой вопрос - есть огромный проэкт(спринг), с тоннами легаси кода. Документации мало. Посоветуйте инструменты/литературу   - как вычленять из него бизнес-логику?
Есть еще книжка как по заказу - Working effectively with legacy code. Скорее про подходы к легаси. Как медленно все менять, чтобы ничего не сломать.
К Spring не привязана вообще
источник

RB

Rob B in Spring Framework and more
Andrii
самое страшное - макаронины бизнес-логики залезли даже в Сеттеры бинов)
Что такое сеттеры бинов?
источник

A

Andrii in Spring Framework and more
Rob B
Что такое сеттеры бинов?
обычный сеттер для private поля бина , как в  pojo классах
источник

RB

Rob B in Spring Framework and more
Andrii
обычный сеттер для private поля бина , как в  pojo классах
Что делает этот бин?
источник

VS

Vlad Shevchenko in Spring Framework and more
Привет, хочу сделать мапинг ManyToMany но имя foreign key отличается от primery, по этому использую referencedColumnName :

С одной стороны
   @ManyToMany
   @JoinTable(name = "mt4_group_securities",
                   joinColumns = { @JoinColumn(name = "type", referencedColumnName = "security") },
                   inverseJoinColumns = { @JoinColumn(name = "group") })
private Set<Mt4SecurityEntity> mt4Securities = new HashSet<>();

И с другой стороны :

@ManyToMany
   @JoinTable(name = "mt4_group_securities",
           joinColumns = { @JoinColumn(name = "group") },
           inverseJoinColumns = { @JoinColumn(name = "security") })
 private Set<GroupEntity> groupEntities = new HashSet<>();

и получаю ошибку ввида:

Caused by: org.hibernate.MappingException: Unable to find column with logical name: security in org.hibernate.mapping.Table(mt4_securities) and its related supertables and secondary tables

кто то сталкивался ?
источник

ЕБ

Евгений Боровов in Spring Framework and more
Он ругается на то, что не может в энтити с другой стороны найти поле security куда замаплен ключ
источник

AT

Arqin T in Spring Framework and more
Vlad Shevchenko
Привет, хочу сделать мапинг ManyToMany но имя foreign key отличается от primery, по этому использую referencedColumnName :

С одной стороны
   @ManyToMany
   @JoinTable(name = "mt4_group_securities",
                   joinColumns = { @JoinColumn(name = "type", referencedColumnName = "security") },
                   inverseJoinColumns = { @JoinColumn(name = "group") })
private Set<Mt4SecurityEntity> mt4Securities = new HashSet<>();

И с другой стороны :

@ManyToMany
   @JoinTable(name = "mt4_group_securities",
           joinColumns = { @JoinColumn(name = "group") },
           inverseJoinColumns = { @JoinColumn(name = "security") })
 private Set<GroupEntity> groupEntities = new HashSet<>();

и получаю ошибку ввида:

Caused by: org.hibernate.MappingException: Unable to find column with logical name: security in org.hibernate.mapping.Table(mt4_securities) and its related supertables and secondary tables

кто то сталкивался ?
А не проще с mappedBy с одной из сторон?
источник
2019 January 26

b💬

binka 💬 in Spring Framework and more
Так вообще правильно проверять вебсокет эндпоинт? https://pastebin.com/raw/1fL9jBDs или есть способ проще
источник

EA

Evgeny Ageev in Spring Framework and more
Привет. Дописал еще 1 контроллер и получил то, что нужно с помощью PreAuthorize на методах.
Только сейчас доступ перекрыт для всех. Как заставить PreAuthorize работать правильно?
   @PreAuthorize("hasRole('ADMIN')")
   @RequestMapping(value="/timesheet-salary", method = RequestMethod.GET)
   public @ResponseBody
   RecordsResponseBody<MdmRecord> getList(
Роли берутся из БД.
Это означает, что у меня в БД должна быть роль ROLE_ADMIN? Сейчас просто ADMIN в ролях.
источник

S

Sergey 🖋 in Spring Framework and more
Да, причем префикс отключается через такую жопу, что отключать его моментально перехочется
источник

S

Sergey 🖋 in Spring Framework and more
При виде конфига
источник

EA

Evgeny Ageev in Spring Framework and more
А @Secured('ADMIN') не поможет? Тоже ROLE_ADMIN будет искать?
источник

S

Sergey 🖋 in Spring Framework and more
Да
источник