Size: a a a

Spring Framework and more

2019 December 30

AT

Arqin T in Spring Framework and more
Ihar Sadounikau
а из базы тоже тащится только что нужно?)
всё зависит от прописанных зависимостей и уровня ленивости загрузки данных (если речь о String Data)
источник

IS

Ihar Sadounikau in Spring Framework and more
если глупый микросервис отвечающий только за crud то вообще идеальный стартер
источник

K

Kehlani in Spring Framework and more
Ihar Sadounikau
как бы да, но всегда интересно услышать причины почему)
1. Частенько на клиент нужно отдавать данные не в том формате, в котором они лежат в БД. Может возникнуть необходимость поменять название поля / отдавать только часть полей / отдавать данные на основе нескольких сущностей и тд
2. Если в проекте используется Hibernate, велика вероятность столкнуться с каким-нибудь lazy loading вне транзакции, которое берётся непонятно откуда, и как следствие либо словить ошибку, либо получить ситуацию, когда у тебя втихую делается куча ненужных запросов к БД))
Поэтому лучше отдавать DTO. Лично я себе взял за правило, что я с сущностями работаю только внутри сервисов, наружу отдаю только DTO, извне принимаю только DTO
источник

IS

Ihar Sadounikau in Spring Framework and more
Kehlani
1. Частенько на клиент нужно отдавать данные не в том формате, в котором они лежат в БД. Может возникнуть необходимость поменять название поля / отдавать только часть полей / отдавать данные на основе нескольких сущностей и тд
2. Если в проекте используется Hibernate, велика вероятность столкнуться с каким-нибудь lazy loading вне транзакции, которое берётся непонятно откуда, и как следствие либо словить ошибку, либо получить ситуацию, когда у тебя втихую делается куча ненужных запросов к БД))
Поэтому лучше отдавать DTO. Лично я себе взял за правило, что я с сущностями работаю только внутри сервисов, наружу отдаю только DTO, извне принимаю только DTO
это классика с коротой я абсолютно согласен. В последнее время часто начал встречаться с людьми с позицей: "Отцы так делали и я так делаю". Поэтому и поднял этот вопрос. И как написал выше, для некоторых сервисов такая прослойка может быть избыточной всвязи с тем что сервис выполняет сугубо CRUD операции.
источник

K

Kehlani in Spring Framework and more
Ihar Sadounikau
это классика с коротой я абсолютно согласен. В последнее время часто начал встречаться с людьми с позицей: "Отцы так делали и я так делаю". Поэтому и поднял этот вопрос. И как написал выше, для некоторых сервисов такая прослойка может быть избыточной всвязи с тем что сервис выполняет сугубо CRUD операции.
Ну да, если сущности простые, нет каких-нибудь *-to-many-отношений и клиент работает с данными в таком же формате, который в БД, то тогда DTO и правда не особо нужны. Но такие ситуации бывают довольно редко))
источник

IS

Ihar Sadounikau in Spring Framework and more
в микросервисах бывают) да *-to-many хорошо мапится через spring data rest
источник

DS

Dmitry Shut in Spring Framework and more
Всем привет, такой вопрос есть два класса: CommonsRequestLoggingFilter(логирует реквесты, которые приходят приложение) и ClientHttpRequestInterceptor (для логирования реквестов, которые посылает приложение), хочу сделать так, чтобы реквесты с определёнными урлами не логались ни в одном из них, как их связать данным образом или хотя бы подскажите в какую сторону копать?
источник

Ar

Arseny -> r2d2 in Spring Framework and more
Внутри обработки реквеста/респонса иф на юрл вставить можно
источник

DS

Dmitry Shut in Spring Framework and more
Ну, это понятно, а как мне в ClientHttpRequestInterceptor понять, что это именно этот запрос?
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Dmitry Shut
Ну, это понятно, а как мне в ClientHttpRequestInterceptor понять, что это именно этот запрос?
Например, можно объявить бин, имплементящий интерфейс спринга RequestMatcher, и заинжектить его в оба интерсептора. Вначале каждого сделать

if (!blacklistLogUrlMather.matches(request)) {
 // log request
}


request взять из параметра метода "intercept".

Бин RequestMatcher можно создать с помощью комбинирования нескольких готовых имплементаций, вроде AndRequestMatcher,  AntPathRequestMatcher и т.п.
источник

DS

Dmitry Shut in Spring Framework and more
Спасибо
источник

RS

Rostyslav Shevtsiv in Spring Framework and more
Всем привет. Тестирую Spring Data JPA repository, соответственно заполняю базу данными и после/перед каждым тестом нужно эту базу чистить. Используется Liquibase, чищу таким образом:
@Autowired
private SpringLiquibase springLiquibase;

@BeforeEach
public void cleanUpDataSource() throws LiquibaseException {
   springLiquibase.setDropFirst(true);
   springLiquibase.afterPropertiesSet();
}
Метод afterPropertiesSet должен почистить базу, но внутри он получает Connection, который от HikariCP и я получаю такую ошибку:
java.sql.SQLException: HikariDataSource HikariDataSource (HikariPool-1) has been closed.
 at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:96)
 at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:302)
Пробовал менять флаги конфигурации самого HikariCP. Так же пробовал запускать под JUnit 4. Пробовал менять BeforeEach на AfterEach. Результат один - ошибка не меняется. В чем может быть проблема?
источник

◉ⓁⓊⒸⓀⓎ◉ in Spring Framework and more
Rostyslav Shevtsiv
Всем привет. Тестирую Spring Data JPA repository, соответственно заполняю базу данными и после/перед каждым тестом нужно эту базу чистить. Используется Liquibase, чищу таким образом:
@Autowired
private SpringLiquibase springLiquibase;

@BeforeEach
public void cleanUpDataSource() throws LiquibaseException {
   springLiquibase.setDropFirst(true);
   springLiquibase.afterPropertiesSet();
}
Метод afterPropertiesSet должен почистить базу, но внутри он получает Connection, который от HikariCP и я получаю такую ошибку:
java.sql.SQLException: HikariDataSource HikariDataSource (HikariPool-1) has been closed.
 at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:96)
 at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:302)
Пробовал менять флаги конфигурации самого HikariCP. Так же пробовал запускать под JUnit 4. Пробовал менять BeforeEach на AfterEach. Результат один - ошибка не меняется. В чем может быть проблема?
Где-то обрывает коннекшн, поэтому уже нету в хинкари на 96 линии
источник

◉ⓁⓊⒸⓀⓎ◉ in Spring Framework and more
Сначала там смотри а потом что за проблема на 302 в ликвидбазе
источник

◉ⓁⓊⒸⓀⓎ◉ in Spring Framework and more
Поэтому может надо в хенкаре create Connection
источник

◉ⓁⓊⒸⓀⓎ◉ in Spring Framework and more
Что-то типо того времени нет много😂😂
источник

А

Артем Артемович Артемовский in Spring Framework and more
обожаю огрызки стектрейса скинутые в чат
источник

◉ⓁⓊⒸⓀⓎ◉ in Spring Framework and more
Артем Артемович Артемовский
обожаю огрызки стектрейса скинутые в чат
Не говори
источник

А

Артем Артемович Артемовский in Spring Framework and more
это даже круче чем скриншоты
источник

◉ⓁⓊⒸⓀⓎ◉ in Spring Framework and more
Артем Артемович Артемовский
это даже круче чем скриншоты
Что может быть лучше😂😂😂ой скрины с телефона отдельная тема
источник