Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Spring 은 여러가지 오픈소스의 집합체입니다. Rest를 사용하기위해 A -REST를, JSON을 사용하기위해 B를B-JSON,

데이터베이스를 사용하기위해 C를 C-JPA등을 사용할수가 있습니다.

하지만 각 오픈소스는 별개로 업그레이드가되며

A-1  , B-3 , C-5  와같이 버젼의 분기가일어나며 각각 다른 버젼조합을 사용하게되며

그 조합에다른 문제파악은 순전히 그것을 사용하는 개발자가 파악해야하는 부분입니다.

stater의 그룹 집합은 spring boot에서 그 조합을 충분히 검증을 하고 그룹화한 사항이며 모듈이며

하위 버젼을 뭘로 쓸지 알필요가 신경쓸필요가 없습니다.

단지 메이져 버젼만을 선택하고 , 웹요소에 사용되는 수많은 의존성을 우리는 'spring-boot-starter-web' 만 사용하면 됩니다.

...

이것은 마이크로 서비스를 가기위해 아주 중요합니다.  단지  단지 하나의 어플리케이션에서만 수백라인의 의존 복잡성을 관리해야하고

그것이 어플리케이션마다 다르다고 해봅시다.  클러스터 서비스로 구성하기전에 우리는 대부분의 시간을 메이븐 설정에 메달려야할것입니다고통을 받을것입니다.


Spring Boot 의 웹요소를 사용하기위한 메이븐 셋팅예...

Code Block
languagejava
themeEmacs
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.RELEASE</version>
</parent>
<dependencies>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
</dependencies>

그 외 gradle,sbt 등 최근 빌드툴을 사용하는것도 설정을 단순화 할수 있는 방법입니다.

위 xml은 두줄의 코드로만 관리될수도 있습니다.

...

  • 모든 프로젝트가 공통으로 참조하는것 ( 오픈소스 공통 라이브러리)
  • 특정 프로젝트만 참조하는것 ( 특정 로컬 참조)
  • 그룹 프로젝트가 공통으로 참조하는것 ( 내부공통 라이브러리)
BadGood

Image Added

의존성 관계가 스파게티가 되는 일반적인 예입니다.

Image Modified



여기서 의존성 단순화 목표는 , 우리가 사용할 스프링요소에대해서 크게 신경쓰지 않는 것입니다.

스프링 4,5 의 의존성을 모두 이해하고 있다는 있다고하면 작은 요소하나하나를 요소 하나하나를 각각 설정해도 됩니다.

하지만 이것은 우리가 설계할 서비스보다 더 복잡해질수 있으며, 이렇게 시작되고 오랫동안 유지되는

...