Rumah > Java > javaTutorial > teks badan

Apakah cara untuk mendapatkan kacang dalam Spring Boot?

WBOY
Lepaskan: 2023-05-12 15:22:06
ke hadapan
1938 orang telah melayarinya

Kita semua tahu apabila menggunakan rangka kerja spring bahawa jika kelas menggunakan @Service, @Autowire, kaedah suntikan kebergantungan ini merujuk kepada objek lain, dalam kelas lain, kelas ini hanya boleh diperolehi melalui pemberat IOC spring Hanya apabila ada contohnya, objek bergantung boleh dimulakan dengan betul, jika tidak, objek bergantung adalah batal.

Jadi ada persoalan, bagaimana nak dapatkan kacang dalam bekas spring ioc (spring managed beans) di kelas biasa.

Kita semua tahu bahawa objek konteks ApplicationContext pada musim bunga adalah asas untuk mendapatkan kacang.

Dalam but spring, kita boleh mendapatkan kacang dalam tiga cara berikut.

Anotasi Kaedah 1 @PostConstruct

Apakah cara untuk mendapatkan kacang dalam Spring Boot?

Anotasi PostConstruct digunakan pada kaedah yang perlu dilaksanakan selepas suntikan kebergantungan selesai untuk melaksanakan sebarang pemula. Kaedah ini mesti dipanggil sebelum meletakkan kelas ke dalam perkhidmatan.

Semua kelas yang menyokong suntikan pergantungan mesti menyokong anotasi ini. Kaedah yang dianotasi dengan PostConstruct mesti dipanggil walaupun kelas tidak meminta sebarang sumber untuk disuntik. Hanya satu kaedah boleh dianotasi dengan anotasi ini.

Kaedah yang menggunakan anotasi PostConstruct mesti mematuhi semua piawaian berikut:

Kaedah tidak boleh mempunyai sebarang parameter, kecuali dalam kes pemintas EJB, seperti yang ditakrifkan oleh spesifikasi EJB. Dalam kes ini, ia akan mempunyai objek InvocationContext;
Jenis pemulangan kaedah ini mesti terbatal
Kaedah ini tidak boleh membuang pengecualian yang ditandakan; atau peribadi;
Kaedah tidak boleh statik kecuali untuk klien aplikasi; EJB yang boleh mengendalikan pengecualian dan pulih daripadanya.

Kaedah 2 Kelas permulaan ApplicationContext

Kaedah pelaksanaan: Dalam kelas permulaan springboot, takrifkan pembolehubah statik ApplicationContext dan gunakan kaedah getBean bekas untuk mendapatkan objek bergantung.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
/**
 * @author: clx
 * @version: 1.1.0
 */
@SpringBootApplication
public class Application {
    public static ConfigurableApplicationContext ac;
    public static void main(String[] args) {
       ac = SpringApplication.run(Application.class, args);
    }
 
}
Salin selepas log masuk

Kaedah panggilan

/**
 * @author: clx
 * @version: 1.1.0
 */
@RestController
public class TestController {
    /**
     * 方式二
     */
    @GetMapping("test2")
    public void method_2() {
        AutoMethodDemoService methodDemoService = Application.ac.getBean(AutoMethodDemoService.class);
        String test2 = methodDemoService.test2();
        System.out.println(test2);
    }
}
Salin selepas log masuk

Kaedah 3 Menyuntik Konteks Aplikasi

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
 
 
/**
 * springboot静态方法获取 bean 的三种方式(三)
 * @author: clx
 * @version: 1.1.0
 */
@Component
public class StaticMethodGetBean_3<T> implements ApplicationContextAware {
    private static ApplicationContext applicationContext;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        StaticMethodGetBean_3.applicationContext = applicationContext;
    }
 
    public static <T> T  getBean(Class<T> clazz) {
        return applicationContext != null?applicationContext.getBean(clazz):null;
    }
}
Salin selepas log masuk

Kaedah panggilan secara manual

/**
 * 方式三
 */
@Test
public void method_3() {
    AutoMethodDemoService autoMethodDemoService = StaticMethodGetBean_3.getBean(AutoMethodDemoService.class);
    String test3 = autoMethodDemoService.test3();
    System.out.println(test3);
}
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah cara untuk mendapatkan kacang dalam Spring Boot?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!