1) У меня есть 3 проекта микросервисов (Country-micro, State-micro и City-micro) с 3 объектами Country, State и City в каждом микросервисе, определяемом соответственно. Обратите внимание, что все 3 микросервиса имеют одинаковый идентификатор группы в pom.xml.
Все сущности имеют общие 4 поля
Как я могу создать базовый класс сущности для вышеуказанных полей и использовать его в разных микросервисах. Например, в монолитной архитектуре мы можем легко использовать расширение класса, как здесь:
Мой базовый класс
@MappedSuperclass
@Data
public class BaseEntity {
private Long id;
private Date created_date;
private Date modified_date;
private Boolean is_active;
}
Мой дочерний класс
@Entity
@Data
@EqualsAndHashCode(callSuper=false)
@Table(name = "tbl_country")
public class Country extends BaseEntity {
private String countryName;
private String countryCode;
}
Но в архитектуре микросервисов все сущности разделены. Затем, как я могу определить службу для создания суперкласса.
2) С тем же вопросом выше, я также хочу использовать свой постоянный класс в каждом микросервисе. Например, в монолитной структуре мы можем:
public interface Constants {
static String HTTP = "http";
static String COMMA_AND_SPACE = ", ";
}
И может использовать эти константы в любом классе, например:
public String myMethod(MyDto myDto) {
StringBuilder sb = new StringBuilder();
sb.append("My First String").append(Constants.COMMA_AND_SPACE);
sb.append("My Second String").append(Constants.COMMA_AND_SPACE);
}
В какой службе я могу определить константы, Должен ли я создать отдельную службу? или я должен определить одни и те же константы в каждом микросервисе (например, избыточный код). Я также использую класс Utility в монолитной структуре таким же образом.
Пожалуйста, объясните структуру или помогите мне определить базовые классы или Utils.
Заранее спасибо.
@MyTwoCents - я реализовал 3 разных микросервисных проекта. в pom.xml все 3 микросервиса имеют одинаковый идентификатор группы.
Вы можете создать один новый модуль как Common
и поместить в него весь свой общий код.
Просто добавьте его зависимость в любой проект, необходимый в pom.xml
.
Так что даже если вы запустите Microservice1
отдельно, вам придется привязать к нему еще и общий модуль.
например, в Microservice1
pom.xml
добавить общую зависимость
<dependency>
<groupId>com.sample.common</groupId>
<artifactId>Common</artifactId>
<version>${project.version}</version>
</dependency>
Может прочтите и это
Спасибо за быстрый ответ. У меня появилась идея построить структуру. Я также просматриваю ссылку SO stackoverflow.com/questions/35223505/…
Когда вы говорите 3 микросервиса => вы имели в виду 3 разных проекта микросервиса или 3 разных API микросервиса в одном проекте?