Size: a a a

Spring Framework and more

2019 May 17

R

Ranorex in Spring Framework and more
Дмитрий
я не знаю почему телеграмм решил что сообщение было вам, возможно я криво тыкнул в момент отправки, оно было в общий чат, тысяча извинений)
и я только сейчас это заметил
Тогда с вас объяснение, зачем в вашем коде RequestScope
источник

Д

Дмитрий in Spring Framework and more
Ranorex
Тогда с вас объяснение, зачем в вашем коде RequestScope
чтобы в сервисы передавать информацию о том, в каком режиме получен реквест. В фильтре вычитываем определённый хедер , значение кладём в бин со скоупом реквест, в сервисах вычитываем это значение и меняем логику если нужно
источник

Д

Дмитрий in Spring Framework and more
это всё в отдельной либе которая подтягивается всеми микросервисами. Таким образом не нарушая текущий API в сервисах есть инфа о режиме работы.
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Дмитрий
чтобы в сервисы передавать информацию о том, в каком режиме получен реквест. В фильтре вычитываем определённый хедер , значение кладём в бин со скоупом реквест, в сервисах вычитываем это значение и меняем логику если нужно
FYI: Можно без фильтра, просто заинжектить HttpServletRequest в request-scoped бин. Спринг сам прокси создает для него в request-скоупе.
источник

Д

Дмитрий in Spring Framework and more
Ruslan Stelmachenko
FYI: Можно без фильтра, просто заинжектить HttpServletRequest в request-scoped бин. Спринг сам прокси создает для него в request-скоупе.
даже так, не знал, проверю, спасибо
источник

A

Andrei in Spring Framework and more
Nicholas
хранить их в разных таблицах?? или в одной? а тогда какие поля добавить в "классического" пользователя?
Используй интерфейсы
источник

A

Andrei in Spring Framework and more
Один интерфейс и куча реализаций. Спринг oauth подключил же?!
источник
2019 May 18

S🕶

Sander 🕶 in Spring Framework and more
Всем привет,
у меня вопрос по поводу Entity immutable, если объект создается таким образом new Person("Name", ........),  все вроде нормально,
но вот надо пользователю поменять статус на администратора или выдать бан пользователю, по сути меняется один field,
но так как все immutable, приходится брать все данные и снова добавлять в объект new Preson(person.getName, .....)
и получается очень много конструкторов в таком случаи, где вначале идут все обязательные данные, а потом дополнительные, для изменения какого либо филда.

Как решить проблему с этим неудобством? чтоб если надо поменять один филд, чтоб не приходилось городить куча конструкторов, если добавлю setter - то это будет уже mutable объект, про lombok я знаю, как это сделать без него.
источник

SB

Serik Begimov in Spring Framework and more
@Builder(toBuilder = true)
@ToString
@Getter
public class Person {

 @NonNull private final String name;
 @NonNull private final String city;
 @NonNull private final Integer age;
 private final List<String> children;
 private final String car;

}



Person person = Person.builder()
   .name("Viktor")
   .city("Stockholm")
   .age(24)
   .build();
источник

PB

Pavel Bukhmatov in Spring Framework and more
Sander 🕶
Всем привет,
у меня вопрос по поводу Entity immutable, если объект создается таким образом new Person("Name", ........),  все вроде нормально,
но вот надо пользователю поменять статус на администратора или выдать бан пользователю, по сути меняется один field,
но так как все immutable, приходится брать все данные и снова добавлять в объект new Preson(person.getName, .....)
и получается очень много конструкторов в таком случаи, где вначале идут все обязательные данные, а потом дополнительные, для изменения какого либо филда.

Как решить проблему с этим неудобством? чтоб если надо поменять один филд, чтоб не приходилось городить куча конструкторов, если добавлю setter - то это будет уже mutable объект, про lombok я знаю, как это сделать без него.
Setter может создавать копию объекта с измененным полем, не меняя первоначальный объект.
А так - создавать имутабельные объекты через билдер, а не тысячу конструкторов
источник

S🕶

Sander 🕶 in Spring Framework and more
Serik Begimov
@Builder(toBuilder = true)
@ToString
@Getter
public class Person {

 @NonNull private final String name;
 @NonNull private final String city;
 @NonNull private final Integer age;
 private final List<String> children;
 private final String car;

}



Person person = Person.builder()
   .name("Viktor")
   .city("Stockholm")
   .age(24)
   .build();
я не знаю как это решит проблему, я уже делал builder-ы, ты так же не сможешь ничего больше изменить,
вот я получил из базы данных объект Person, все он immutable мне больше с ним ничего не сделать,
придется новый создавать и переносить все поля.
источник

PB

Pavel Bukhmatov in Spring Framework and more
Sander 🕶
я не знаю как это решит проблему, я уже делал builder-ы, ты так же не сможешь ничего больше изменить,
вот я получил из базы данных объект Person, все он immutable мне больше с ним ничего не сделать,
придется новый создавать и переносить все поля.
То что ты с ним ничего не сможешь сделать - это и есть весь смысл имутабельности)
Ты можешь создавать билдер от объекта Person, в таком билдере уже будут заполнены все поля от того Person, от которого ты его создаёшь
источник

SB

Serik Begimov in Spring Framework and more
может

public class XPerson {
    private Person person; // immutable
    private String yyy; // то что меняется
}
источник

S🕶

Sander 🕶 in Spring Framework and more
Pavel Bukhmatov
То что ты с ним ничего не сможешь сделать - это и есть весь смысл имутабельности)
Ты можешь создавать билдер от объекта Person, в таком билдере уже будут заполнены все поля от того Person, от которого ты его создаёшь
я знаю что в этом весь смысл, но после создания объекта, я больше ничего сделать не могу, я получил объект из базы person,
все больше с ним ниего не сделать и никакие билдеры не помогут, ибо объект уже создан, как я возьму все поля от предыдущего person и добавлю в нового.
источник

S🕶

Sander 🕶 in Spring Framework and more
Serik Begimov
может

public class XPerson {
    private Person person; // immutable
    private String yyy; // то что меняется
}
не уверен тоже, вот попонятнее пример new Movie("title", ....), надо просто сделать unpublish этот фильм,
class Movie {

   @Column(name = "title")
   private String title;

   @Column(name = "published")
   private boolean published;
}


собственно хочу спратять допустим фильм от пользователей, но чтоб это сделать мне не приходилось брать все поля из одного объекта и перемешать в другой.
источник

PB

Pavel Bukhmatov in Spring Framework and more
Sander 🕶
я знаю что в этом весь смысл, но после создания объекта, я больше ничего сделать не могу, я получил объект из базы person,
все больше с ним ниего не сделать и никакие билдеры не помогут, ибо объект уже создан, как я возьму все поля от предыдущего person и добавлю в нового.
При помощи гетеров? Ты берешь все поля текущего, через гетеры перегоняешь их в мутабельный, непотокобезпасный билдер, а из билдера снова создаёшь свой имутабельные объект
источник

S🕶

Sander 🕶 in Spring Framework and more
можно пример пожалуйста
источник

S🕶

Sander 🕶 in Spring Framework and more
Pavel Bukhmatov
При помощи гетеров? Ты берешь все поля текущего, через гетеры перегоняешь их в мутабельный, непотокобезпасный билдер, а из билдера снова создаёшь свой имутабельные объект
вручную брать все getter-ы  и создавтаь новый объект? new Movie(movie.getTitle, movie.getDescription, movie.getAge, ...)
источник

S🕶

Sander 🕶 in Spring Framework and more
🤔?
источник

S🕶

Sander 🕶 in Spring Framework and more
@aquatir я правильно тебя понял?
источник