cari
RumahJavajavaTutorialSpring-: @Configuration-in-Depth

spring-: @Configuration-in-depth

dalam pemahaman mengenai anotasi @konfigurasi dalam kerangka musim bunga

Anotasi dalam rangka musim bunga digunakan untuk menandakan kelas yang ditakrifkan oleh kelas. Dalam konfigurasi berasaskan Java Spring, anotasi ini sangat penting. @Configuration

Apabila kelas menggunakan

anotasi, musim bunga akan memperlakukannya sebagai kelas konfigurasi dan memprosesnya untuk menjana dan mengurus kacang spring. Jenis ini biasanya mengandungi satu atau lebih @Configuration anotasi. @Bean


@konsep teras konfigurasi

  1. tandakan kelas sebagai kelas konfigurasi

    Kelas ini menjadi sumber definisi kacang, dan musim bunga akan menggunakan definisi ini untuk menetapkan konteks aplikasi.

  2. mekanisme agensi
  3. Spring akan menjana sub -kelas berasaskan CGLIB (proksi) untuk memastikan bahawa kaedah mengembalikan contoh contoh tunggal yang sama secara lalai. Tingkah laku ini dipanggil mod lengkap

    . Jika anda tidak melakukan ejen, hubungi kaedah

    beberapa kali boleh membuat beberapa contoh. @Bean @Bean Bersepadu dengan komponen

  4. Apabila
  5. apabila digunakan dengan (atau dalam kelas dengan anotasi

    ), kelas anotasi boleh ditakrifkan secara eksplisit oleh, dan musim bunga dibenarkan untuk mengimbas dan mendaftarkan kacang lain secara automatik.

    @ComponentScan Benarkan suntikan @SpringBootApplication @Configuration

    menyokong kelas suntikan ketergantungan berdasarkan pembina atau medan -berdasarkan untuk menyelesaikan item ketergantungan yang diperlukan untuk membuat kacang.
  6. Contoh Asas

    @Configuration

    @bean method
  7. : secara eksplisit menentukan kacang.

Tingkah laku tunggal -contoh

: walaupun

panggilan
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {

    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }

    @Bean
    public MyController myController() {
        return new MyController(myService());
    }
}
, kerana mekanisme agensi,
    kacang hanya dibuat sekali.
  • Amalan Terbaik
  • 1. Konfigurasi modular myController() myService() Menurut fungsi (seperti DataConfig, ServiceConfig, dan WebConfig), konfigurasi dibahagikan kepada pelbagai kelas. Ini meningkatkan kebolehbacaan dan penyelenggaraan. MyService
2. Elakkan nilai pengekodan keras

Gunakan sumber konfigurasi luaran (seperti aplikasi.

3. Gunakan @componentscan untuk mengimbas

Jangan tunjukkan semua kacang, gunakan
@Configuration
public class DataConfig {
    @Bean
    public DataSource dataSource() {
        // 配置并返回数据源
    }
}

@Configuration
public class ServiceConfig {
    @Bean
    public UserService userService() {
        return new UserServiceImpl();
    }
}
daftar

, dan komponen.

@Value 4. Gunakan syarat Bean @ConfigurationProperties

@Configuration
public class AppConfig {

    @Value("${app.name}")
    private String appName;

    @Bean
    public AppService appService() {
        return new AppService(appName);
    }
}
Gunakan atau

anotasi seperti untuk menentukan kacang secara kondusif, dan hanya kacang yang dimuatkan dalam persekitaran atau konfigurasi tertentu.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {

    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }

    @Bean
    public MyController myController() {
        return new MyController(myService());
    }
}

5. atribut aplikasi organisasi

Gunakan untuk mengumpulkan atribut konfigurasi untuk meminimumkan anotasi

yang terdesentralisasi. @ConfigurationProperties @Value

@Configuration
public class DataConfig {
    @Bean
    public DataSource dataSource() {
        // 配置并返回数据源
    }
}

@Configuration
public class ServiceConfig {
    @Bean
    public UserService userService() {
        return new UserServiceImpl();
    }
}
perkara yang perlu diperhatikan

Elakkan kacang instantiated manual
    jangan gunakan
  1. untuk membuat kacang dalam kelas , kerana ia akan memintas suntikan pergantungan Spring dan pengurusan kitaran hayat. @Configuration new Penulisan yang salah:

Ketergantungan Cyclone

Berhati -hati apabila menentukan kacang yang saling bergantung, kerana ia akan menyebabkan pergantungan peredaran.
@Configuration
public class AppConfig {

    @Value("${app.name}")
    private String appName;

    @Bean
    public AppService appService() {
        return new AppService(appName);
    }
}
  1. Penyelesaian: Membina semula kod untuk menyuntiknya untuk menyuntik atau menggunakan .

Kaedah @bean Elakkan kaedah anotasi @Lazy re -muat turun, kerana ia boleh menyebabkan hasil yang tidak dijangka.

  1. Sekatan agen Mekanisme agensi @Bean tidak berkesan apabila kelas tidak muktamad. Elakkan menandakan kelas konfigurasi ke akhir.

  2. Gunakan @component dengan teliti Elakkan pencampuran dan @Configuration dalam kelas yang sama. Ini boleh membawa kepada tingkah laku yang tidak dijangka, kerana kaedah pemprosesan

    berbeza.
  3. menggunakan contoh suntikan canggih @Component @Configuration @Configuration

    Bergantung dalam
  4. : Setiap kacang bergantung pada kacang lain, Spring secara automatik akan menyelesaikan hubungan ketergantungan.

boleh digunakan semula oleh kacang

:

dan
@Configuration
@ComponentScan(basePackages = "com.example.myapp")
public class AppConfig {
    // 必要时使用显式Bean
}
kacang boleh digunakan semula di kalangan pelbagai perkhidmatan.
  • Ringkasan
  • Tujuan : membolehkan menentukan kacang dalam kaedah keselamatan pekat dan jenis. DataSource JdbcTemplate Amalan Terbaik
  • : Modularize konfigurasi, gunakan atribut luar, dan gunakan anotasi Spring (seperti
dan
).

Perangkap yang perlu dielakkan
    : kacang secara manual, ketergantungan kitaran, beban berat
  • kaedah, dan menggunakan akhir. @Configuration
  • Dengan mengikuti amalan ini, anda boleh menggunakan
  • dengan berkesan untuk membina aplikasi musim bunga yang kuat dan mudah.

Atas ialah kandungan terperinci Spring-: @Configuration-in-Depth. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.