봄 부팅 해석 가장 인기있는 16 연습! [공유] 화웨이 클라우드

스티커 : 화웨이 클라우드 (618) 큰 뜨거운 관객 홍보 폴드, 무료 호스트, 소비자의 전체 용량은 P30 Pro를 보내 담배를 구입하기 위해 여기를 클릭하십시오 .

 

봄 부팅 마이크로 서비스의 개발을위한 가장 인기있는 자바 프레임 워크입니다. 이 기사에서는 전문적인 개발에 2016 년부터 고용 봄 부팅을 사용하는 모범 사례를 공유합니다. 내용은 잘 알려진 개인적인 경험의 기사 봄 부팅 전문가 및 저자을 기반으로합니다.

이 글에서, 우리는 봄 부팅 특정 사례에 초점을 맞출 것이다 (대부분의 시간을, 또한 봄 프로젝트에 적용). 다음은 알파벳 순서로, 모범 사례의 순서로 나열되어 있습니다.

1, 사용 사용자 정의 BOM은 타사 유지 보수에 의존하는

이 연습은 내가 실제 프로젝트 경험에 따라 요약입니다.

봄 부팅은 우리가 이러한 제 3 자 종속성을 유지하는 데 도움이 자체가 오픈 소스 프로젝트의 큰 숫자를 사용하고, 통합하고 전망이다. 그러나 또한 우리가이 프로젝트의 자신의 버전을 유지하는 데 필요한 실제 프로젝트 사용에 포함 된 부분이 아닌있다. 유지 보수가 매우 복잡하므로, 미개발 모듈의 수를 포함한 대규모 프로젝트는합니다.

그것을 어떻게? 사실, 봄 IO 플랫폼은 타사 오픈 소스 라이브러리를 유지하면서, 자체 부팅 봄 하위 ​​프로젝트 인이 일을 수행하는 것입니다. 우리는 자신의 인프라 프로젝트의 플랫폼 BOM을 작성하는 봄 IO 플랫폼에서 배울 수있는, 모든 비즈니스 모듈 프로젝트는 BOM으로 소개한다. 타사 업그레이드에 따라 이러한 의존성은, 당신은 단지에만 의존의 버전을 업그레이드해야합니다.

2, 자동 구성을 사용

주요 기능은 봄 부팅 자동의 사용이다. 이것은 봄 부트의 일부입니다, 그것은 당신의 코드를 단순화하고 작업 할 수 있습니다. 클래스 경로상의 특정 JAR 파일을 검출 할 때, 자동 구성을 활성화한다.

그것을 사용하는 가장 쉬운 방법은 의존 봄 부팅 선발이다. 당신은 레디 스 통합 싶다면, 먼저 포함 할 수 있습니다 :

당신이 MongoDB를 통합 할 경우 필요 :

이러한 우선,이 지루한 구성이 아니라 함께 함께 작업 통합 될 수 있으며, 테스트 및 확인되었습니다. 이것은 무서워 항아리 지옥을 피하기 위해 많은 도움이 될 것입니다.

https://dzone.com/articles/what-is-jar-hell

다음 주석 속성을 사용하여, 일부는 자동 구성 클래스 구성에서 제외 될 수 있습니다 :

하지만 절대적으로 필요가 수행해야 할 때.

자동 구성에 대한 공식 문서는 여기에서 찾을 수 있습니다 :

https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html .

봄 Initializr를 사용하여 3, 새 프로젝트 봄 부팅을 시작합니다

이것은 (starbuxman @, 봄 옹호) 조쉬 롱에서 가장 좋습니다.

봄 Initializr 새로운 봄 부팅 프로젝트를 만들려면 슈퍼 간단한 방법을 제공하고 필요에 따라 부하 의존성에 사용할 가능성이 높다.

https://start.spring.io/

사용 Initializr은 이러한 종속성은 자동으로 Spring 설정에 적용, 당신은 테스트 및 검증받을 수 있도록 응용 프로그램 종속성을 만들 수 있습니다. 당신은 새로운 통합을 찾을 수 있습니다,하지만 당신이 인식되지 않을 수 있습니다.

4, 일반적인 조직의 문제를 자신의 자동 구성입니다 만드는 것이 좋습니다

또한 조쉬 롱에서 온이 하나 (봄 옹호, @ starbuxman) -이 방법은 고급 사용자를위한 것입니다.

당신이 봄 부팅 회사 또는 팀 작업에 큰 의존도, 그리고 해결해야 할 공통의 ​​문제가있는 경우에, 당신은 당신의 자신의 자동 구성을 만들 수 있습니다.

당신이 혜택은 투자 가치가있는 때 고려해야 할 필요가 있으므로이 작업은, 더 많은 작업을 포함한다. 쉽게 하나의 자동 구성을 유지하면서보다 약간 다른 사용자 정의 구성과 비교.

이 제안 봄 부팅 구성이 오픈 소스 라이브러리에 발표되면, 그것은 수천 명의 사용자가 크게 작업의 구성을 단순화합니다.

5, 올바른 디자인 코드 디렉토리 구조

에도 불구하고 당신은 많은 자유를 가질 수 있지만 소스 코드의 구조를 설계하기 위해 다음과 같은 몇 가지 기본 규칙 가치가있다.

기본 패키지를 사용하지 마십시오. 당신은 조립 및 예기치 않은 상황의 구성 요소 스캔과 관련된 피할 수 있도록 (당신의 진입 점 포함)의 모든 내용이, 좋은 패키지의 이름에 있는지 확인하십시오;

Application.java (흡입 형 응용 프로그램) 소스의 최상위 디렉토리에 남아;

나는 컨트롤러 모듈과 서비스 기능 지향을 넣어 제안, 그러나 이것은 선택 사항입니다. 일부 아주 좋은 개발자는 함께 모든 컨트롤러 것이 좋습니다. 어떤 경우에는, 스타일을 고수!

@Controller를 유지 6, 간단하고 초점

컨트롤러는 매우 간단합니다. 당신은 여기 GRASP 컨트롤러 패턴 관련 부품에 대한 설명을 읽을 수 있습니다. 당신은 코디네이터와 컨트롤러의 역할을 원하고 오히려 실제 비즈니스 로직을 수행하는 것보다, 위임. 다음은 주요 사례입니다 :

https://en.wikipedia.org/wiki/GRASP(object-orienteddesign) #Controller
  • 컨트롤러는 비 저장해야합니다! 기본적으로, 제어기는 하나의 실시 예에서, 모든 상태는 문제들을 일으킬 수있다;
  • 컨트롤러는 대신에 의뢰 의존하고, 비즈니스 로직을 수행해서는 안된다
  • 제어기는 상기 서비스에 송신하지 않아야 HTTP 애플리케이션 계층을 처리한다;
  • 컨트롤러는 주위를 설계하는 경우 / 운영 능력을 사용해야합니다.

이 내용은 REST API를 디자인 모범 사례를 더 이해의 필요성을 더욱합니다. 당신이 봄 부팅을 사용할지 여부, 그것은 가치가 학습입니다.

7, 비즈니스 기능을 중심으로 구축 @Service

서비스는 봄 부팅의 또 다른 핵심 개념이다. 나는 유스 케이스 (당신이 할 것입니다 호출 방법에 상관없이)를 구축하기 위해 최선의 주변에 비즈니스 기능 / 지역 / 서비스를 발견했다.

디자인 응용 프로그램 이름의 유사 AccountService, UserService, PaymentService좋아하는 비교 등의 서비스는, DatabaseService, ValidationService, CalculationService이 더 적합 할 것이다.

당신은 CONTROLER 및 서비스 사이에 하나의 매핑에 하나를 사용하도록 결정할 수 있습니다, 그것은 이상적인 상황 일 것이다. 그러나 이것은 각 다른 서비스를 호출 할 수 없습니다 것을 의미하지 않는다!

8, 핵심 비즈니스 로직 외부 데이터베이스의 독립 너무

아직 봄 부팅의 데이터베이스 상호 작용을 처리하기 위해 최선의 방법을 결정하지 않았다. 나를 위해 로버트 · C · 마틴의 "지우기 아키텍처"를 읽고 나면 훨씬 명확하다.

당신은 당신의 데이터베이스 로직이 서비스에서 분리합니다. 이상적으로, 당신은 서비스가 일부 추상 개체를 캡슐화 지속성을 필요로하는 데이터베이스와 통신하는 데 무엇인지 알고 싶지 않다.

로버트 C. 마틴 강하게에 대한 데이터베이스가 특정 응용 프로그램 및 데이터베이스 커플 링되지 의미 "세부 사항", 방법. 지난 몇 사람들이 데이터베이스를 전환합니다 동안, 나는 현대 마이크로 봄 부팅 및 서비스 개발 메이크업 물건의 사용을 빠르게 나타났습니다.

9, 비즈니스 로직에서 스프링 효과 부팅 코드를 잡고

계정에 교훈 "지우기 아키텍처"를 가지고 가서, 당신은 또한 당신의 비즈니스 로직을 보호해야합니다. 다양한 봄 부팅 코드가 혼합 함께 매우하지 않는다 ...... 유혹이다. 당신이 유혹에 저항 할 수 있다면, 당신은 당신의 비즈니스 로직을 재사용 할 수 유지합니다.

서비스 중 일부는 일반적으로 라이브러리된다. 당신은 코드에서 봄 주석의 큰 번호를 삭제하지 않으면 쉽게 만들 수 있습니다.

10, 추천 생성자 주입

이 필 웹의 (봄 부트 프로젝트 리더, @phillip_webb)에서 좋습니다.

코드 봄 부팅에서 비즈니스 로직을 유지하는 방법은 생성자 주입을 사용하여 침입. 뿐만 아니라 때문에 @Autowired생성자에 주석는 선택 사항이며 쉽게 봄의 부재에서 빈을 인스턴스화 할 수 있습니다.

11, 동시성 모델을 잘 알고있는

내가 쓴 가장 인기있는 기사 중 하나는 "동시성의 봄 부팅 소개"입니다. 나는이 지역은 종종 오해하고 간과되는 그 이유는 생각합니다. 부적절하게 사용한 경우, 문제가 될 것입니다.

https://www.e4developer.com/2018/03/30/introduction-to-concurrency-in-spring-boot/

봄 부팅에서, 컨트롤러 및 서비스는 기본이 하나의 사례입니다. 주의하지 않으면 동시성 문제를 소개 할 수있을 것입니다. 또한 일반적으로 처리하는 스레드 풀을 제한했다. 이러한 개념을 숙지하시기 바랍니다.

새 WebFlux 스타일 봄 부팅 응용 프로그램을 사용하는 경우, 나는 그것이 어떻게 작동하는지 "봄의 WebFlux / 원자로 병렬 및 배압이"에 설명했다.

(12), 외부 구성 관리 강화

사람들이 여러 가지 유사한 서비스 문제를 만들 시작했을 때이 일반적이지만이, 봄 부팅 넘어 ......

수동으로 구성 봄 응용 프로그램을 처리 할 수 ​​있습니다. 여러 봄 부팅 응용 프로그램을 처리하는 경우 더 강력한 구성 관리 기능을 확인해야합니다.

나는 두 가지 방법을 추천합니다 :

  • 구성 서버, 예를 들어, 봄 클라우드 구성을 사용하여;
  • 모든 구성은 (는 자식 저장소에 기초하여 구성 될 수있는) 환경 변수에 저장된다.

이러한 옵션 중 하나 (좀 더 두 번째 옵션)를 사용하면 개발 운영 팀에서 적은 작업을 필요로하지만, 마이크로 서비스 분야에서 매우 일반적입니다.

(13) 글로벌 예외 핸들러

정말 필요 이상 당신에게 처리의 일관성있는 방법를 수행합니다. 봄 부팅은 두 가지 방법을 제공합니다 :

  • 당신은 HandlerExceptionResolver 예외 처리를위한 글로벌 전략을 정의 사용해야합니다;
  • 또한 사용이 특정 시나리오에 유용 할 수 컨트롤러에 @ExceptionHandler 주석을 추가 할 수 있습니다.

이 REST와 봄의 잘 가치가 읽기 오류 처리에 대한 자세한 기사가 거의 봄 Baeldung 동일하다.

https://www.baeldung.com/exception-handling-for-rest-with-spring

로그 프레임을 이용 (14)

아마 이미 알고 당신,하지만 당신은 수동으로 오히려에서 System.out.println을 사용하는 것보다, 로깅 로거를 사용하여 수행해야한다 (). 이것은 쉽게 거의 구성 봄 부팅에 이루어집니다. 그냥 기록 인스턴스의이 종류를 얻을 :

그것은 필요에 따라 서로 다른 로깅 수준을 설정할 수 있기 때문에 중요하다.

15, 코드를 테스트

이 봄 부팅에 고유 한 아니지만, 상기 할 필요가 - 테스트 코드를! 당신이 테스트를 작성하지 않는 경우에, 당신은 기존의 코드를 작성하기 시작합니다.

다른 사람들이 당신의 코드베이스를 사용하는 경우, 아무것도 변경 위험이 될 것입니다. 당신은 하나 개 이상의 서비스의 상호 의존성, 5 월에도 위험한있을 때.

당신이 당신의 봄 클라우드 계약 소비자 중심 계약 고려해야하므로 때문에 봄 부팅 가장 좋은 방법으로, 그것은 사용하기 쉽게 다른 서비스와 통합 할 수있게된다.

16, 테스트 섹션을 사용하여 테스트 쉽고 더 집중하게하는

이 Madhura Bhave에 (봄 개발자, @ madhurabhave23)에서 좋습니다.

사용 봄 부팅 테스트 코드는 까다로운 일이 될 수 있습니다 - 당신은 데이터 층, 시뮬레이션 할 것들 ...... 실제로하지 그 하드 서비스 많은 수의 연결을 초기화 할 필요가! 대답은 테스트 섹션을 사용하는 것입니다.

필요에 따라 시험 슬라이스를 사용하면 응용 프로그램의 일부만을 연결할 수 있습니다. 이것은 당신에게 많은 시간을 저장하고 테스트를하지 않는 연합 (EU)의 콘텐츠와 관련성이없는 것을 확인 할 수 있습니다. 에서 http://spring.io 봄 테스트 블로그 기사 1.4 기사 자격 사용자 정의 테스트 조각이 기술을 보여줍니다.

https://spring.io/blog/2016/08/30/custom-test-slice-with-spring-boot-1-4

개요

덕분에 봄 부팅 쓰기 Spring 기반의 마이크로 서비스는 그 어느 때보 다 쉬워졌습니다. 나는이 모범 사례를 통해, 당신은 곧뿐만 아니라 구현 과정이 될 수 있기를 바랍니다 만, 장기적으로 더 강력하고 성공적으로 될 것입니다.

출처 : 홀리스 http://t.cn/EJWZNra 저자 : 바르 토스 Jedrzejewski

금 제품 시간 : 화웨이 클라우드 (618) 승진 뜨거운 배, 무료 호스트를 연기 관객은 소비자의 전체 용량은 P30 Pro를 보낼 구입하려면 여기를 클릭하십시오 .

추천

출처www.cnblogs.com/huaweicloud/p/11867824.html