이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
관찰자 패턴은 주제라고 하는 개체가 관찰자라고 하는 종속 항목 목록을 유지 관리하고 일반적으로 해당 메서드 중 하나를 호출하여 상태 변경을 자동으로 알리는 소프트웨어 디자인 패턴입니다.
이벤트 기반 프로그래밍에 매우 유용한 패턴이며 MVC(Model-View-Controller) 아키텍처 패턴의 기초 중 하나입니다.
이 기사에서는 Spring Boot 애플리케이션에서 Observer 패턴을 사용하는 방법을 살펴보겠습니다. 패턴의 기본 개념과 일반적으로 사용되는 방식을 살펴보는 것으로 시작하겠습니다. 그런 다음 Spring Boot가 JavaBeans 사양에 대한 내장 지원으로 패턴을 쉽게 구현하는 방법을 살펴보겠습니다.
앞서 언급했듯이 관찰자 패턴은 주제라고 하는 개체가 관찰자라고 하는 종속 항목 목록을 유지 관리하고 일반적으로 메서드 중 하나를 호출하여 상태 변경을 자동으로 알리는 소프트웨어 디자인 패턴입니다.
이 정의에 대해 몇 가지 유의해야 할 사항이 있습니다.
주제는 클래스가 아니라 객체입니다. 이것은 주제가 int 또는 String과 같은 기본 유형을 포함하여 모든 유형의 객체가 될 수 있음을 의미합니다.
옵저버도 객체이지 클래스가 아닙니다. 이는 관찰자가 int 또는 String과 같은 기본 유형을 포함하여 모든 유형의 객체가 될 수 있음을 의미합니다.
주제는 관찰자 목록을 유지합니다. 이 목록은 일반적으로 ArrayList 또는 LinkedList와 같은 컬렉션으로 구현됩니다.
주체는 메서드 중 하나를 호출하여 관찰자에게 알립니다. 호출되는 메서드는 구현에 따라 다르지만 일반적으로 update() 또는 handleEvent()와 같이 관찰자 패턴에 특정한 메서드입니다.
관찰자 패턴은 이벤트 기반 프로그래밍에서 자주 사용됩니다. 즉, 관찰자는 변경 사항에 대해 폴링되지 않고 대상의 상태 변경 사항을 통지받습니다.
이제 관찰자 패턴의 기본 개념을 살펴보았으므로 일반적으로 어떻게 사용되는지 살펴보겠습니다.
관찰자 패턴을 사용할 수 있는 몇 가지 방법이 있지만 가장 일반적인 방법은 이벤트 기반 프로그래밍입니다.
이벤트 기반 프로그래밍에서 응용 프로그램은 일반적으로 중앙 이벤트 루프를 중심으로 구성됩니다. 이벤트는 사용자, 하드웨어 또는 응용 프로그램 자체에 의해 생성되며 이벤트 처리기에 의해 처리됩니다.
관찰자 패턴은 이벤트 루프에서 이벤트 핸들러를 분리하는 데 사용할 수 있습니다. 이벤트 처리기는 관찰자로 구현될 수 있으며 이벤트 루프에 등록될 수 있습니다. 이벤트가 발생하면 이벤트 루프는 관찰자에게 알리고 이벤트를 처리할 수 있습니다.
여기에는 몇 가지 장점이 있습니다.
이벤트 처리기는 재사용 가능한 구성 요소로 구현될 수 있습니다.
이벤트 핸들러는 런타임 시 등록 및 등록 해제될 수 있습니다.
이벤트 핸들러는 임의의 순서로 호출할 수 있습니다.
이벤트 핸들러를 동시에 호출할 수 있습니다.
Spring Boot 애플리케이션에서 Observer 패턴을 사용하는 방법을 살펴보겠습니다.
Spring Boot는 JavaBeans 사양에 대한 내장 지원으로 Observer 패턴을 쉽게 사용할 수 있게 해줍니다.
JavaBeans는 Java 코드 작성을 위한 일련의 규칙을 정의하는 Java 구성 요소에 대한 사양입니다. 규칙 중 하나는 JavaBeans 구성 요소가 각 속성에 대한 JavaBeans 스타일 setter 메서드를 가져야 한다는 것입니다.
예를 들어 구성 요소에 foo라는 속성이 있는 경우 구성 요소에는 setFoo() 메서드가 있어야 합니다. setFoo() 메서드가 호출되면 구성 요소는 FooPropertyChangeEvent를 실행해야 합니다.
Spring Boot는 이 규칙을 사용하여 관찰자 패턴을 지원합니다. Spring Boot 애플리케이션이 시작되면 JavaBeans 스타일 setter 메서드가 있는 클래스의 클래스 경로를 스캔합니다. 각 setter 메서드에 대해 관찰자를 등록합니다.
setter 메서드가 호출되면 관찰자에게 알립니다. 그런 다음 관찰자는 주제에 대한 메서드 호출 또는 메시지 로깅과 같은 적절한 작업을 수행할 수 있습니다.
간단한 예를 통해 이것이 어떻게 작동하는지 봅시다.
foo라는 속성이 있는 Spring Boot 애플리케이션을 고려하십시오. 애플리케이션은 application.properties 파일에서 foo 특성을 설정합니다.
푸=바
애플리케이션에는 Observer 인터페이스를 구현하는 FooObserver라는 클래스도 있습니다.
공개 클래스 FooObserver는 관찰자를 구현합니다 {
@우세하다
공개 무효 업데이트(Observable o, 객체 arg) {
// 뭔가를
}
}
애플리케이션이 시작되면 Spring Boot 프레임워크는 JavaBeans 스타일 setter 메서드가 있는 클래스의 클래스 경로를 스캔합니다. FooObserver 클래스를 찾아 foo 속성에 대한 관찰자로 등록합니다.
애플리케이션이 foo 속성을 설정하면 Spring Boot 프레임워크는 FooObserver의 update() 메서드를 호출합니다. 그런 다음 update() 메서드는 메시지를 기록하거나 주제에 대한 메서드를 호출하는 등 적절한 작업을 수행할 수 있습니다.
이 예제는 관찰자 패턴을 사용하여 Spring Boot 애플리케이션의 구성 요소를 분리하는 방법을 보여줍니다. 옵저버는 재사용 가능한 구성 요소로 구현될 수 있으며 런타임에 등록 및 등록 해제될 수 있습니다.
이 기사에서는 Spring Boot 애플리케이션에서 Observer 패턴을 사용하는 방법을 살펴보았습니다. 패턴의 기본 개념과 일반적으로 사용되는 방식을 살펴보았습니다. 그런 다음 Spring Boot가 JavaBeans 사양에 대한 기본 제공 지원으로 패턴을 쉽게 구현하는 방법을 살펴보았습니다.