Bagaimana untuk menghapuskan suis-case dalam Springboot
Logik asas adalah seperti berikut:
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: }
Selepas menulisnya, anda akan mendapati bahawa apabila peristiwa meningkat, kod ini akan menjadi sangat panjang, dan fungsi pemprosesan setiap peristiwa juga tertumpu dalam satu kelas mudah diselenggara. Oleh itu, melalui carian dan pembelajaran, kami mendapati bahawa kami boleh menggunakan anotasi Springboot + mod strategi + kilang mudah untuk menghapuskan suis-case.
Refactor
Takrif struktur
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; } }
Tentukan anotasi
Definisi Pemprosesan acara antara muka
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface CRSEventAnnotation { CRSEvent value(); }
Setiap kelas pemprosesan masa mesti melaksanakan antara muka ini. Antaranya, laksanakan ialah kaedah pemprosesan acara
Tulis kelas pemprosesan masa tertentu
Seterusnya, tulis kelas pemprosesan acara satu persatu, berikan yang berikut contoh:
public interface EventProcess { CRSResponse execute(CRSRequest resquest); }
Tentukan kelas alat SpringContext
@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; } }
Tentukan kilang kelas pemprosesan acara untuk menghasilkan pelbagai objek pemprosesan acara
@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; } }
Pengubahsuaian kod panggilan
@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); } }
Dengan cara ini, tiada kes suis dalam kod dan menambah acara juga sangat mudah Anda hanya perlu melaksanakan antara muka EventProcess.
Atas ialah kandungan terperinci Bagaimana untuk menghapuskan suis-case dalam Springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Perbezaan antara suis versi Jepun dan versi Hong Kong: 1. Terdapat perbezaan besar dalam pengecas Versi Jepun dan port pengecasan standard kebangsaan adalah perkara biasa, dan versi Hong Kong menggunakan palam segitiga British; Versi Jepun menggunakan pembayaran kad mata, manakala versi Hong Kong menggunakan Alipay 3. , Waranti selepas jualan untuk versi Hong Kong perlu dihantar semula ke titik selepas jualan HK, manakala versi Jepun perlu diposkan kepada tempat selepas jualan yang ditetapkan di Jepun.

Penyelesaian untuk suis tidak bertindak balas kepada TV: 1. Periksa sama ada bekalan kuasa suis dan TV disambungkan 2. Periksa sama ada antara muka kabel TV HDMI dipasang dengan ketat 3. Buka penutup belakang tapak Suis; dan periksa sama ada kord kuasa dan kabel HDMI dipasang dengan ketat 4. Periksa sama ada Suis dihidupkan dan dimasukkan ke dalam pangkalan 5. Periksa sama ada TV telah menukar sumber isyarat;

Bolehkah Elden's Ring dimainkan pada suis? Sebagai permainan RPG aksi yang sangat menarik, ramai rakan mungkin tidak tahu sama ada ia boleh dimainkan dengan lancar pada platform suis. Bolehkah Ring of Elden dimainkan pada suis Jawapan: Ia tidak boleh dimainkan pada suis. Permainan aksi main peranan siri Souls yang dinanti-nantikan ini telah dikeluarkan secara rasmi Pemain boleh membelinya pada PC, PS4/5 dan Xbox Series eX|S/XboxOne dan mengalaminya dengan segera. Ramai rakan yang memiliki suis mungkin masih tidak sabar-sabar untuk menikmati permainan ini di NS, tetapi malangnya, tiada versi suis permainan. Mengikut keperluan konfigurasi laman web rasmi, konfigurasi permainan agak tinggi, dan sw

Suis tidak boleh diletakkan di tapak untuk mengecas sepanjang masa.

SpringBoot dan SpringMVC adalah kedua-dua rangka kerja yang biasa digunakan dalam pembangunan Java, tetapi terdapat beberapa perbezaan yang jelas antara mereka. Artikel ini akan meneroka ciri dan penggunaan kedua-dua rangka kerja ini dan membandingkan perbezaannya. Mula-mula, mari belajar tentang SpringBoot. SpringBoot telah dibangunkan oleh pasukan Pivotal untuk memudahkan penciptaan dan penggunaan aplikasi berdasarkan rangka kerja Spring. Ia menyediakan cara yang pantas dan ringan untuk membina bersendirian, boleh dilaksanakan

Memori switch32g tidak mencukupi Sebabnya adalah seperti berikut: 1. Jika anda membeli permainan digital dan ingin membeli tangkapan skrin DLC dan menyimpannya dalam mesin pegang tangan, ia tidak mencukupi menyimpan kira-kira 2 hingga 3 permainan, yang tidak mencukupi Keperluan untuk bermain permainan; .

Perbezaan antara suis lite dan suis adalah: 1. Saiz yang berbeza; . Menyokong permainan yang berbeza 6. Warna yang berbeza.

Artikel ini akan menulis contoh terperinci untuk bercakap tentang perkembangan sebenar dubbo+nacos+Spring Boot. Artikel ini tidak akan merangkumi terlalu banyak pengetahuan teori, tetapi akan menulis contoh paling mudah untuk menggambarkan bagaimana dubbo boleh disepadukan dengan nacos untuk membina persekitaran pembangunan dengan cepat.
