Как сделать класс Super / Base / Parent в микросервисах при весенней загрузке - расширить этот класс в дочернем классе - PullRequest
0 голосов
/ 31 мая 2019

1) У меня есть 3 проекта микросервисов (Country-micro, State-micro и City-micro) с 3 объектами Country, State и City в каждом микросервисе, соответственно. Обратите внимание, что все 3 микросервиса имеют одинаковый идентификатор группы в pom.xml

Все объекты имеют общие 4 поля

  1. ID
  2. created_date
  3. MODIFIED_DATE
  4. is_active

Как создать базовый класс сущности для указанных полей и использовать его в разных микросервисах. Например, в монолитной архитектуре мы можем легко использовать расширение класса, как здесь определено:

Мой базовый класс

@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 в монолитной структуре таким же образом.

Пожалуйста, объясните структуру или направьте меня для определения базовых классов или утилит.

Заранее спасибо.

1 Ответ

1 голос
/ 31 мая 2019

Вы можете создать один новый модуль как Common и поместить в него весь свой общий код.

Просто добавьте его зависимость в любой проект, необходимый в pom.xml.

Таким образом, даже если вы запустите Microservice1 отдельно, вам также придется связать с ним общий модуль.

например, в Microservice1 pom.xml добавить общую зависимость

<dependency>
    <groupId>com.sample.common</groupId>
    <artifactId>Common</artifactId>
    <version>${project.version}</version>
</dependency>

Может прочитать это также

...