So beseitigen Sie Switch-Case in Springboot
Die Grundlogik lautet wie folgt:
String event = crsRequest.getEvent(); CRSResponse crsResponse = null; switch (event) { case CRSRequestEvent.APP_START: crsResponse = processAppStartCommand(crsRequest); break; case CRSRequestEvent.INIT_COMPLETE: crsResponse = processInitCompleteCommand(crsRequest); break; case CRSRequestEvent.COLLECT_COMPLETE: crsResponse = processCollectCompleteCommand(crsRequest); break; case CRSRequestEvent.COLLECT_NO_INPUT: crsResponse = processCollectNoInputCommand(crsRequest); break; case CRSRequestEvent.PLAY_COMPLETE: crsResponse = processPlayCompleteCommand(crsRequest); break; default: }
Nachdem Sie es geschrieben haben, werden Sie feststellen, dass dieser Code mit zunehmender Anzahl von Ereignissen sehr lang wird und die Verarbeitungsfunktionen jedes einzelnen Auch die Konzentration von Ereignissen auf eine Klasse ist schwierig aufrechtzuerhalten. Daher haben wir durch Suchen und Lernen herausgefunden, dass wir Springboots Anmerkungen + Strategiemodus + einfache Fabrik verwenden können, um Switch-Case zu eliminieren.
Refactoring
Struktur definieren
public enum CRSEvent { APP_START("APP_START"), INIT_COMPLETE("INIT_COMPLETE"), PLAY_COMPLETE("PLAY_COMPLETE"), COLLECT_COMPLETE("COLLECT_COMPLETE"), COLLECT_NO_INPUT("COLLECT_NO_INPUT"), APP_END("APP_END"), RESP_ERROR_CMD("RESP_ERROR_CMD"); private String event; CRSEvent(String event){ this.event = event; } public String getEvent() { return event; } public void setEvent(String event) { this.event = event; } }
Annotation definieren# 🎜🎜 #
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface CRSEventAnnotation { CRSEvent value(); }
public interface EventProcess { CRSResponse execute(CRSRequest resquest); }
Schreiben Sie eine bestimmte Zeitverarbeitungsklasse
@Component("appStartProcess") @CRSEventAnnotation(value = CRSEvent.APP_START) public class AppStartProcess implements EventProcess{ @Override public CRSResponse execute(CRSRequest resquest) { CRSResponse response = new CRSResponse(); response.setCommand(CRSResponseCmd.IVR_SESSION_INIT); CRSResponse.Message message = new CRSResponse.Message(); message.setTts_vid("65580"); message.setTts_speed("120"); response.setMessage(message); return response; } }
@Component public class SpringContextUtil implements ApplicationContextAware{ private ApplicationContext context; public ApplicationContext getContext(){ return context; } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.context = applicationContext; } }
@Component public class EventProcessFactory { @Autowired SpringContextUtil contextUtil; private static Map<CRSEvent, EventProcess> eventProcessMap = new ConcurrentHashMap<>(); public EventProcessFactory() { Map<String, Object> beanMap = contextUtil.getContext().getBeansWithAnnotation(CRSEventAnnotation.class); for (Object evetProcess : beanMap.values()) { CRSEventAnnotation annotation = evetProcess.getClass().getAnnotation(CRSEventAnnotation.class); eventProcessMap.put(annotation.value(), (EventProcess) evetProcess); } } public static EventProcess createEventProcess(CRSEvent event){ return eventProcessMap.get(event); } }
Codeänderung aufrufen
CRSEvent crsEvent = CRSEvent.valueOf(crsRequest.getEvent()); EventProcess eventProcess = EventProcessFactory.createEventProcess(crsEvent); if (eventProcess != null){ return eventProcess.execute(crsRequest); } return null;
Auf diese Weise muss der Code nicht umgeschaltet werden, und das Hinzufügen eines Ereignisses ist ebenfalls sehr einfach Implementieren Sie die EventProcess-Schnittstelle.
Das obige ist der detaillierte Inhalt vonSo beseitigen Sie Switch-Case in Springboot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Unterschiede zwischen der japanischen Version des Schalters und der Hongkong-Version: 1. Es gibt große Unterschiede beim Ladegerät. Die japanische Version und der nationale Standard-Ladeanschluss sind üblich, und die Hongkong-Version verwendet einen britischen Dreiecksstecker Die japanische Version nutzt Punktekartenzahlung, während die Hongkong-Version Alipay 3 verwendet. Die Kundendienstgarantie für die Hongkong-Version muss an die HK-Kundendienststelle zurückgeschickt werden, während die japanische Version per Post an die Kundendienststelle geschickt werden muss die angegebene Kundendienststelle in Japan.

Lösung für den Fall, dass der Schalter nicht auf das Fernsehgerät reagiert: 1. Überprüfen Sie, ob die Stromversorgung des Schalters und des Fernsehgeräts angeschlossen ist. 2. Überprüfen Sie, ob die HDMI-Kabelschnittstelle des Fernsehgeräts fest eingesteckt ist. 3. Öffnen Sie die hintere Abdeckung der Schalterbasis und überprüfen Sie, ob das Netzkabel und das HDMI-Kabel fest eingesteckt sind. 4. Überprüfen Sie, ob der Schalter eingeschaltet und in die Basis gesteckt ist. 5. Überprüfen Sie, ob das Fernsehgerät die Signalquelle umgeschaltet hat.

Kann Elden's Ring auf der Switch gespielt werden? Viele Freunde wissen möglicherweise nicht, ob es derzeit reibungslos gespielt werden kann. Kann Ring of Elden auf dem Switch gespielt werden? Antwort: Es kann nicht auf dem Switch gespielt werden. Dieses mit Spannung erwartete Rollenspiel-Actionspiel der Souls-Serie wurde offiziell für PC, PS4/5 und Xbox Series eX|S/XboxOne veröffentlicht und kann es sofort erleben. Viele Freunde, die eine Switch besitzen, möchten dieses Spiel vielleicht immer noch auf NS genießen, aber leider gibt es keine Switch-Version dieses Spiels. Gemäß den offiziellen Konfigurationsanforderungen der Website ist die Spielkonfiguration relativ hoch und sw

Der Schalter kann nicht ständig an der Basis aufgeladen werden. Die Gefahren sind: 1. Verkürzung der Batterielebensdauer und 2. Verursachen Sie ein Durchbrennen des Speichers.

SpringBoot und SpringMVC sind beide häufig verwendete Frameworks in der Java-Entwicklung, es gibt jedoch einige offensichtliche Unterschiede zwischen ihnen. In diesem Artikel werden die Funktionen und Verwendungsmöglichkeiten dieser beiden Frameworks untersucht und ihre Unterschiede verglichen. Lassen Sie uns zunächst etwas über SpringBoot lernen. SpringBoot wurde vom Pivotal-Team entwickelt, um die Erstellung und Bereitstellung von Anwendungen auf Basis des Spring-Frameworks zu vereinfachen. Es bietet eine schnelle und einfache Möglichkeit, eigenständige, ausführbare Dateien zu erstellen

Der Speicher von switch32g reicht nicht aus: 1. Wenn Sie eine digitale Version des Spiels kaufen und DLC-Screenshots kaufen und auf dem Handheld-Gerät speichern möchten, reicht dies nicht aus In der digitalen Version des Spiels können etwa 2 bis 3 Spiele gespeichert werden, was nicht ausreicht. Digitale Spiele und deren DLC werden im Allgemeinen auf 5G verwaltet. Im System ist das Herunterladen von Spielen für Spieler schwieriger.

In diesem Artikel wird ein detailliertes Beispiel geschrieben, um über die tatsächliche Entwicklung von Dubbo + Nacos + Spring Boot zu sprechen. In diesem Artikel wird nicht zu viel theoretisches Wissen behandelt, sondern das einfachste Beispiel wird geschrieben, um zu veranschaulichen, wie Dubbo in Nacos integriert werden kann, um schnell eine Entwicklungsumgebung aufzubauen.

Die Unterschiede zwischen Switch Lite und Switch sind: 1. Unterschiedliche Größen und Gehäusegewichte; 3. Unterschiedliche Griffe; unterschiedliche Grifffunktionen; . Unterstützt verschiedene Spiele; 6. Verschiedene Farben.
