Membuat pelayan TCP untuk menyambung ke peranti pintar, dan kemudian perlu menyimpan maklumat penting seperti kedudukan yang dihantar oleh peranti dalam masa nyata ke dalam pangkalan data.
Untuk mempertimbangkan kemungkinan menyediakan antara muka rehat kepada dunia luar pada masa hadapan, pelayan TCP disepadukan ke dalam rangka kerja SpringBoot, ia juga untuk menggunakan rangka kerja mybatis untuk mencapai akses data sebagai secepat mungkin, dan kemudian menyelesaikan cara memulakan, cara log keluar, dsb. Masalahnya ialah apabila memproses mesej pelayan TCP, anda perlu menulis ke pangkalan data, terus memanggil lapisan DAO, dan menyusun serta melaporkan ralat.
Lapisan Perkhidmatan dipanggil secara normal dan berjalan ke tempat panggilan Pengecualian penunjuk nol dijejaki dan perkhidmatan didapati kosong disuntik melalui @Autowired oleh lapisan pengawal sebelumnya gagal.
@Component public class ServerHandler extends IoHandlerAdapter { @Autowired protected HealthDataService healthDataService; private static ServerHandler serverHandler ; @PostConstruct //通过@PostConstruct实现初始化bean之前进行的操作 public void init() { serverHandler = this; serverHandler.healthDataService = this.healthDataService; // 初使化时将已静态化的testService实例化 } //测试调用 public void test(){ serverHandler .healthDataService.<你的service层方法>; }
Anotasi kelas yang perlu memanggil lapisan Perkhidmatan Spring dengan @Component sebagai Pemuatan komponen;
Juga dapatkan objek Bean lapisan Perkhidmatan melalui @Autowired; 🎜> Serlahkan: Lulus Anotasi @PostConstruct untuk memulakan objek statik dan healthDataService pembolehubah ahli statiknya semasa pemulaan Prinsipnya adalah untuk mendapatkan objek lapisan perkhidmatan dan menyimpannya secara statik untuk mengelakkannya daripada dikeluarkan.
Perangkap tersebut:Apabila saya mula-mula mula memanggil, saya selalu fikir ia sangat mudah pada masa lalu, springmvc menulis konfigurasi, menandakan objek sebagai kacang , dan anda boleh memanggilnya sesuka hati Terdapat kacang dalam bekas Spring IOC, tetapi ini adalah SpringBoot, jadi mungkin ada perbezaan saya mencuba tiga halaman pertama bantuan daripada Baidu, tetapi pada dasarnya tidak berjaya. Termasuk: 1) Isytiharkan kelas alat sebagai komponen spring, seperti @controller @compent, dsb., dan tambahkan pakej di mana kelas alat terletak dalam tetapan pakej imbasan automatik spring Tidak sah
2) perkhidmatan baharu tidak sah;
Pemprosesan transaksi Springboot berbilang perkhidmatan yang memanggil satu sama lain
Saya mahu memanggil kaedah B perkhidmatan lain dalam kaedah A satu perkhidmatan, kedua-duanya kaedah A dan kaedah B Terdapat operasi pemasukan pangkalan data, dan anotasi @Transaction telah ditambahkan, tetapi apabila pengecualian dilemparkan dalam kaedah B, pernyataan sisipan dalam A masih boleh dilaksanakan dengan jayanya. Konfigurasi anotasi
@Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED)
Saya hairan Selepas mencari maklumat yang berkaitan, saya mendapati bahawa masalahnya masih terletak pada konfigurasi anotasi @Transaction, yang memerlukan pengecualian konfigurasi. rollback.
@Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED,rollbackFor = Exception.class)
Atas ialah kandungan terperinci Cara SpringBoot memanggil lapisan perkhidmatan dalam kelas tersuai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!