Mamy obiekt:
@Getter
@Setter
public class Person {
// ...
private String gender;
private String race;
private Address address;
}
Jak wiadomo płeć może się zmieniać wiele razy w życiu z minuty na minutę. Chciałbym jednak walidować zmianę płci w zalenożści od miejsca zamieszkania. Jeśli ktoś zamieszkuje zacofane kraje jak Chiny to nie może zmienić płci i ma tylko 2 do wyboru, a jak nowoczesne jak Szwecja to ma do dyspozycji 57 płci.
Stworzyłem więc bezpieczny serwis do zmian atrybutów Person
walidacji tych pól. Jak wymusić by nikt nie zrobił czegoś takiego: person.setRace("Spanish")
tylko przez serwis?
Jedyne co mi porzychodzi do głowy to umieszczenie Person
i PersonService
w jednym pakiecie i ustawienie setterów "scope" Person
na pakietowe, a serwisowe na publiczne. Niestety nie zawsze jest to możliwe, bo ludzie ładują serwisy do pakietów services
a obiekty do model
.
Inne rozwiązania?