반응형

Java의 의존성 역전 원칙

1. 개요 DIP(Dependency Inversion Principle)는 SOLID 로 널리 알려진 객체 지향 프로그래밍 원칙 모음의 일부를 구성합니다 . 본질적으로 DIP는 잘 구조화되고 고도로 분리되어 있으며 재사용 가능한 소프트웨어 구성 요소를 구현하는 데 사용할 수 있는 단순하면서도 강력한 프로그래밍 패러다임입니다 . 이 사용방법(예제)에서는 JPMS (Java Platform Module System)를 사용하여 Java 8과 Java 11에서 각각 하나씩 DIP를 구현하는 다양한 접근 방식을 살펴봅니다 . 2. 의존성 주입 및 제어 반전은 DIP 구현이 아닙니다. 무엇보다도 기본을 올바르게 하기 위해 근본적인 차이점을 만들어 보겠습니다. DIP는 DI(의존성 주입)도 IoC(제어 역전)도 ..

Spring 2022.12.11

와이어 탭 엔터프라이즈 통합 패턴

1. 개요 이 사용방법(예제)에서는 시스템을 통해 흐르는 메시지를 모니터링하는 데 도움이 되는 Wire Tap Enterprise Integration Pattern(EIP)에 대해 설명합니다 . 이 패턴을 사용하면 메시지를 채널에서 영구적으로 소비하지 않고 메시지를 가로챌 수 있습니다 . 2. 와이어 탭 패턴 Wire Tap은 지점간 채널을 통해 이동하는 메시지를 검사합니다 . 메시지를 수신하고 사본을 만들어 Tap Destination으로 보냅니다 . 이를 더 잘 이해하기 위해 ActiveMQ 및 Camel을 사용하여 Spring Boot 애플리케이션을 생성해 보겠습니다 . 3. 메이븐 의존성 camel-spring-boot-dependencies를 추가해봅시다 . org.apache.camel.sp..

Spring 2022.12.11

Java의 단일 책임 원칙

1. 개요 이 사용방법(예제)에서는 개체 지향 프로그래밍의 SOLID 원칙 중 하나인 단일 책임 원칙에 대해 설명합니다 . 전반적으로 이 원칙이 무엇인지, 소프트웨어를 설계할 때 이를 구현하는 방법에 대해 자세히 살펴보겠습니다. 또한 이 원칙이 오해의 소지가 있는 경우에 대해 설명합니다. *SRP = 단일 책임 원칙 2. 단일 책임 원칙 이름에서 알 수 있듯이 이 원칙은 각 클래스가 하나의 책임, 하나의 목적을 가져야 한다고 명시합니다 . 이는 클래스가 하나의 작업만 수행한다는 의미이므로 변경해야 하는 이유는 하나뿐 이어야 한다는 결론을 내리게 됩니다 . 우리는 너무 많이 알고 관련 없는 행동을 하는 객체를 원하지 않습니다. 이러한 클래스는 유지하기가 더 어렵습니다. 예를 들어 여러 가지 이유로 많이 변..

Spring 2022.12.11

Java의 개방/폐쇄 원칙

1. 개요 이 사용방법(예제)에서는 객체 지향 프로그래밍의 SOLID 원칙 중 하나인 OCP(Open/Closed Principle)에 대해 설명합니다 . 전반적으로 이 원칙이 무엇이며 소프트웨어를 설계할 때 이를 구현하는 방법에 대해 자세히 설명합니다. 2. 개방/폐쇄 원리 이름에서 알 수 있듯이 이 원칙은 소프트웨어 엔터티가 확장에는 열려 있어야 하지만 수정에는 닫혀 있어야 한다고 명시합니다. 결과적으로 비즈니스 요구 사항이 변경되면 엔터티를 확장할 수 있지만 수정할 수는 없습니다. 아래 그림에서는 인터페이스가 OCP를 따르는 한 가지 방법에 초점을 맞출 것입니다. 2.1. 미준수 덧셈과 뺄셈과 같은 여러 연산이 있는 계산기 앱을 구축한다고 가정해 보겠습니다. 먼저 최상위 인터페이스인 Calculat..

Spring 2022.12.11

Java의 Liskov 대체 원칙

1. 개요 SOLID 설계 원칙은 Robert C. Martin이 2000년 논문인 Design Principles and Design Patterns 에서 소개했습니다 . SOLID 디자인 원칙은 유지 관리가 쉽고 이해하기 쉬우며 유연한 소프트웨어를 만드는 데 도움이 됩니다. 이 기사에서는 약어의 "L"인 Liskov 대체 원칙에 대해 설명합니다. 2. 개방/폐쇄 원칙 Liskov 대체 원리를 이해하려면 먼저 개방/폐쇄 원리(SOLID의 "O")를 이해해야 합니다. 개방/폐쇄 원칙의 목표는 우리가 소프트웨어를 설계하도록 장려하므로 새 코드를 추가해야만 새로운 기능을 추가할 수 있습니다 . 이것이 가능할 때 우리는 느슨하게 결합되어 쉽게 유지 관리할 수 있는 응용 프로그램을 갖게 됩니다. 3. 사용 사례..

Spring 2022.12.11

Fauna 및 Spring을 사용하여 IoT 애플리케이션 구축

1. 소개 이 기사에서는 Fauna 및 Spring 에서 제공하는 IoT 애플리케이션을 빌드합니다 . 2. IoT 애플리케이션 – 고속 에지 및 분산 데이터베이스 IoT 애플리케이션은 사용자 가까이에서 작동합니다. 대기 시간이 짧은 대량의 실시간 데이터를 소비하고 처리하는 일을 담당합니다. 짧은 대기 시간과 최대 성능을 달성하려면 빠른 Edge Computing 서버와 분산 데이터베이스가 필요합니다. 또한 IoT 애플리케이션은 구조화되지 않은 데이터를 처리하는데, 주로 데이터를 소비하는 소스가 다양하기 때문입니다. IoT 애플리케이션에는 이러한 비정형 데이터를 효율적으로 처리할 수 있는 데이터베이스가 필요합니다. 이 기사에서는 온도, 심박수, 혈중 산소 수준 등과 같은 개인의 건강 바이탈을 처리하고 저장..

Spring 2022.12.10

Spring Boot 3 및 Spring Framework 6.0 – 새로운 기능

1. 개요 Spring Boot 3 출시 까지 얼마 남지 않은 지금이 새로운 기능을 확인하기에 좋은 시기인 것 같습니다. 2. 자바 17 이전에는 이미 Java 17에 대한 지원이 있었지만 이제 이 LTS 버전이 기준이 됩니다. LTS 버전 11에서 마이그레이션할 때 Java 개발자는 새로운 언어 기능을 활용할 수 있습니다. Java 자체는 이 기사의 주제가 아니므로 Spring Boot 개발자를 위한 가장 중요한 새 기능의 이름만 지정하겠습니다. Java 17 , 16 , 15 , 14 , 13 및 12 에 대한 별도의 문서에서 추가 세부 정보를 찾을 수 있습니다 . 2.1. 기록 Java 레코드( JEP 395 , Java 14 레코드 키워드 참조 )는 데이터 캐리어 클래스, 즉 단순히 데이터를 포함..

Spring 2022.12.10

스프링 프로필

1. 개요 이 사용방법(예제)에서는 Spring의 프로필 소개에 중점을 둘 것입니다. 프로필은 프레임워크의 핵심 기능입니다. 예를 들어 dev , test 및 prod 와 같은 다른 프로필에 bean을 매핑할 수 있습니다 . 그런 다음 서로 다른 환경에서 서로 다른 프로필을 활성화하여 필요한 빈만 부트스트랩할 수 있습니다. 2. 빈에서 @Profile 사용 간단하게 시작하여 빈을 특정 프로필에 속하게 만드는 방법을 살펴보겠습니다. 우리는 @Profile 어노테이션을 사용합니다 — 빈을 ​​해당 특정 프로필에 매핑합니다 . 어노테이션은 단순히 하나(또는 여러 개) 프로필의 이름을 사용합니다. 기본 시나리오를 고려하십시오. 개발 중에만 활성화되어야 하지만 프로덕션에 배포되지 않는 빈이 있습니다. 개발 프로필..

Spring 2022.12.10

Java에서 null 유형이란 무엇입니까?

1. 소개 Java 세계에서 null 유형은 널리 퍼져 있으며 이를 만나지 않고는 언어를 사용하기가 어렵습니다. 대부분의 경우, 그것이 아무것도 없음 또는 부족함을 나타낸다는 직관적인 이해만으로도 효과적으로 프로그래밍하기에 충분합니다. 그럼에도 불구하고 때때로 우리는 주제를 더 깊이 파고들고 철저하게 이해하기를 원합니다. 이 사용방법(예제)에서는 null 형식이 내부에서 어떻게 작동하고 다른 형식과 어떻게 관련되는지 살펴보겠습니다 . 2. 유형이란 무엇입니까? null 유형 에 대한 특정 질문에 답하기 전에 유형이 실제로 무엇인지 정의해야 합니다. 경쟁 정의가 많기 때문에 쉬운 작업이 아닙니다. 우리에게 가장 유용한 것은 가치 공간의 정의입니다. 이 정의에서 유형은 보유할 수 있는 가능한 값 세트로 정의..

Spring 2022.12.10

Java에서 문자열을 BigDecimal로 변환

1. 개요 이 예제에서는 Java에서 String을 BigDecimal 로 변환하는 다양한 방법을 다룰 것입니다 . 2. 빅데시멀 BigDecimal은 불변의 임의 정밀도 부호 있는 10진수를 나타냅니다 . 두 부분으로 구성됩니다. 스케일링되지 않은 값 – 임의 정밀도 정수 스케일 – 소수점 오른쪽의 자릿수를 나타내는 32비트 정수 예를 들어, BigDecimal 3.14의 스케일되지 않은 값은 314이고 스케일은 2입니다. 0 또는 양수인 경우 스케일은 소수점 오른쪽의 자릿수입니다. 음수인 경우 스케일이 적용되지 않은 숫자 값에 스케일 부정의 거듭제곱에 10을 곱합니다. 따라서 BigDecimal 이 나타내는 숫자의 값은 (Unscaled 값 × 10 -Scale ) 입니다 . Java의 BigDeci..

Spring 2022.12.10
반응형