Я собираюсь разработать небольшое веб-приложение, чтобы получить представление об архитектуре микро-сервисов, используя spring-boot и spring-data-jpa.
На начальном этапе у меня есть только 2 объекта (1) CountryEntity и (2) StateEntity.В монолитной структуре, которая у меня уже есть, есть связь между этими двумя сущностями, такими как:
CountryEntity:
@Entity
@Data
@EqualsAndHashCode(callSuper=false)
public class CountryEntity extends BaseEntity{
private String countryCode;
private String country;
@OneToMany(mappedBy = "country", orphanRemoval = true, cascade = CascadeType.ALL)
private Set<StateEntity> stateEntities;
}
StateEntity:
@Entity
@Data
@EqualsAndHashCode(callSuper=false)
public class StateEntity extends BaseEntity {
private String stateCode;
private String state;
@ManyToOne
private Country country;
}
Также обратите вниманиечто у меня есть, расширяет BaseEntity, который содержит общие поля, такие как:
BaseEntity:
@MappedSuperclass
@Data
public abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private Date createdDateTime;
private Date updatedDateTime;
private Boolean isActive;
private Boolean isDelete;
@PrePersist
private void setCreatedDateTime() {
this.createdDateTime = new Date();
this.isActive = true;
this.isDelete = false;
}
@PreUpdate
private void setUpdatedDateTime() {
this.updatedDateTime = new Date();
}
}
Теперь у меня есть 2 запроса при преобразовании вышеуказанной монолитной структуры в микросервисы, как описано здесь:
1. Должен ли я создать общую библиотеку (отдельный микросервис для общего кода, а затем добавить зависимость во всех различных приложениях микросервисов) для BaseEntity, определенного выше, и других классов, таких как Constants, Utility и т. Д.?или я должен повторить весь код во всех микросервисах?Пожалуйста, следуйте инструкциям, потому что некоторые сайты предлагают использовать разделяемую библиотеку, а некоторые эксперты советуют не использовать разделяемую библиотеку и предлагают повторить весь код.Что я должен сделать для улучшения архитектуры.
2. Как я могу дать взаимосвязь между двумя объектами в архитектуре микросервисов?Я прошел ТАК вопросы, и некоторые отзывы говорят, что это невозможно.Тогда у меня есть приложение, в котором все объекты прямо или косвенно связаны.Здесь я только что взял пример из оригинального приложения.Я знаю, что это должна быть какая-то структура или какой-то способ, с помощью которого я могу применять отношения.Пожалуйста, ведите меня.
Большое спасибо заранее.