Rumah > Java > javaTutorial > teks badan

Analisis terperinci Java tentang skop Bean

WBOY
Lepaskan: 2022-08-31 17:28:04
ke hadapan
1454 orang telah melayarinya

Artikel ini membawakan anda pengetahuan yang berkaitan tentang java The Spring framework ialah bekas IoC yang menguruskan Beans, jadi Beans secara semula jadi adalah sumber yang penting dalam Spring. Ada berapa jenis? Mari kita lihat bersama-sama, saya harap ia akan membantu semua orang.

Analisis terperinci Java tentang skop Bean

Pembelajaran yang disyorkan: "tutorial video java"

Rangka kerja Spring ialah bekas IoC yang menguruskan kacang, jadi kacang itu secara semula jadi Spring Sumber penting dalam Bean, apakah maksud skop Bean? Ada berapa jenis? Mari kita lihat seterusnya.

PS: Kelas awam di Java boleh dipanggil Beans atau Java Beans.

1. Skop

Skop Kacang merujuk kepada mod tingkah laku tertentu Kacang dalam keseluruhan rangka Kerja Spring. Sebagai contoh, skop tunggal bermakna terdapat hanya satu salinan Bean dalam keseluruhan Spring, dan ia dikongsi secara global Apabila seseorang mengubah suai nilai, perkara yang dibaca oleh orang lain ialah nilai yang diubah suai.

Sebagai contoh, kami mentakrifkan pengguna objek Bean tunggal dalam Spring (skop lalai ialah tunggal Kod pelaksanaan khusus adalah seperti berikut:

@Component
public class UserBean {
    @Bean
    public User user() {
        User user = new User();
        user.setId(1);
        user.setName("Java"); // 此行为重点:用户名称为 Java
        return user;
    }
}
Salin selepas log masuk

Kemudian, dalam Objek pengguna ialah). digunakan dan diubah suai dalam kelas A. Kod pelaksanaan khusus adalah seperti berikut:

@Controller
public class AController {
    @Autowired
    private User user;
    public User getUser() {
        User user = user;
        user.setName("MySQL"); // 此行为重点:将 user 名称修改了
        return user;
    }
}
Salin selepas log masuk

Akhir sekali, objek pengguna juga digunakan dalam kelas B. Kod pelaksanaan khusus adalah seperti berikut:

@Controller
public class BController {
    @Autowired
    private User user;
    public User getUser() {
        User user = user;
        return user;
    }
}
Salin selepas log masuk

Pada masa ini, apabila kita mengakses kaedah getUser dalam objek B, kita akan mendapati bahawa nama pengguna pada masa ini adalah "MySQL" diubah suai dalam kelas A, bukannya "Java" asal Ini bermakna objek Bean pengguna lalai kepada skop tunggal. Jika objek tunggal ini diubah suai di mana-mana, kelas lain akan mendapat nilai yang diubah suai apabila dipanggil semula.

2. Klasifikasi skop

Dalam Spring, terdapat 5 skop biasa Bean berikut:

  • singleton: singleton skop;
  • prototaip : skop prototaip (skop berbilang contoh);
  • Nota: Tiga skop terakhir hanya terpakai pada rangka kerja Spring MVC.
  • 2.1 singleton

Perihalan rasmi: (Lalai) Skop definisi kacang tunggal kepada contoh objek tunggal untuk setiap bekas Spring IoC.Penerangan: Skop ini Ada hanyalah satu contoh Bean di bawah dalam bekas IoC: Bean yang diperolehi (iaitu, diperoleh melalui applicationContext.getBean dan kaedah lain) dan Bean yang dipasang (iaitu, disuntik melalui @Autowired) kedua-duanya adalah objek yang sama.

Senario: Biasanya kacang

stateless

menggunakan skop ini. Stateless bermakna keadaan harta objek Bean tidak perlu dikemas kini.

Nota:

Spring memilih skop ini secara lalai.

Prototaip 2.2

Penerangan rasmi: Skop definisi kacang tunggal kepada sebarang bilangan kejadian objek.Penerangan: Setiap kali Kacang di bawah skop ini ditakrifkan Baharu contoh akan dibuat untuk setiap permintaan: mendapatkan kacang (iaitu, mendapatkannya melalui kaedah seperti applicationContext.getBean) dan memasang kacang (iaitu, menyuntiknya melalui @Autowired) adalah kedua-dua contoh objek baharu.

Senario: Biasanya kacang

stateful

menggunakan skop ini.

Permintaan 2.3

Penerangan rasmi: Skop definisi kacang tunggal kepada kitaran hayat permintaan HTTP tunggal Iaitu, setiap permintaan HTTP mempunyai contoh kacang yang dibuat di belakang a takrifan kacang tunggal. Hanya sah dalam konteks Konteks Aplikasi Spring yang sedar web.Penerangan: Setiap permintaan Http akan mencipta tika Bean baharu, serupa dengan prototaip.

Senario: Permintaan dan tindak balas Http dikongsi kacang.

Nota: Terhad untuk digunakan dalam rangka kerja Spring MVC.

Sesi 2.4

Penerangan rasmi: Skop definisi kacang tunggal kepada kitaran hayat Sesi HTTP Hanya sah dalam konteks Konteks Aplikasi Spring yang sedar web.

Penerangan. : Dalam Sesi Http, tentukan contoh Bean.

Senario: Kongsi Bean sesi pengguna, contohnya: merekod maklumat log masuk pengguna.

Nota: Terhad untuk digunakan dalam rangka kerja Spring MVC.

Aplikasi 2.5

Penerangan rasmi: Skop definisi kacang tunggal kepada kitaran hayat ServletContext Hanya sah dalam konteks Spring ApplicationContext yang sedar web.

Penerangan: Dalam Konteks Servlet Http, tentukan contoh Bean.

Senario: Maklumat kontekstual aplikasi Web, seperti merekodkan maklumat kongsi aplikasi.

Nota: Terhad untuk digunakan dalam rangka kerja Spring MVC.

3. Tetapan skop

Kita boleh menetapkan skop Bean melalui anotasi @Scope Terdapat dua cara untuk menetapkannya:

Tetapkan skop secara langsung Nilai khusus. , seperti: @Scope("prototype");

Tetapkan pembolehubah SCOPE_XXX yang disediakan oleh ConfigurableBeanFactory dan WebApplicationContext, seperti @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE).

Kod tetapan khusus adalah seperti berikut:

Skop Kacang merujuk kepada corak tingkah laku tertentu Kacang dalam keseluruhan rangka kerja Spring. Terdapat 5 skop biasa Bean: singleton (skop kes tunggal), prototaip (skop prototaip), permintaan (skop permintaan), sesi (skop permintaan), aplikasi (skop global), perhatikan tiga fungsi terakhir Domain hanya tersedia dalam rangka kerja MVC Spring.

Pembelajaran yang disyorkan: "tutorial video java"

Atas ialah kandungan terperinci Analisis terperinci Java tentang skop Bean. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:jb51.net
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