Rumah > Java > javaTutorial > Spring-: @Configuration-in-Depth

Spring-: @Configuration-in-Depth

Barbara Streisand
Lepaskan: 2025-01-28 22:06:15
asal
438 orang telah melayarinya

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
<code class="language-java">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());
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk
, 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
<code class="language-java">@Configuration
public class DataConfig {
    @Bean
    public DataSource dataSource() {
        // 配置并返回数据源
    }
}

@Configuration
public class ServiceConfig {
    @Bean
    public UserService userService() {
        return new UserServiceImpl();
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk
daftar

, dan komponen.

@Value 4. Gunakan syarat Bean @ConfigurationProperties

<code class="language-java">@Configuration
public class AppConfig {

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

    @Bean
    public AppService appService() {
        return new AppService(appName);
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk
Gunakan atau

anotasi seperti untuk menentukan kacang secara kondusif, dan hanya kacang yang dimuatkan dalam persekitaran atau konfigurasi tertentu.
<code class="language-java">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());
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk

5. atribut aplikasi organisasi

Gunakan untuk mengumpulkan atribut konfigurasi untuk meminimumkan anotasi

yang terdesentralisasi. @ConfigurationProperties @Value

<code class="language-java">@Configuration
public class DataConfig {
    @Bean
    public DataSource dataSource() {
        // 配置并返回数据源
    }
}

@Configuration
public class ServiceConfig {
    @Bean
    public UserService userService() {
        return new UserServiceImpl();
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk
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.
<code class="language-java">@Configuration
public class AppConfig {

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

    @Bean
    public AppService appService() {
        return new AppService(appName);
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk
  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
<code class="language-java">@Configuration
@ComponentScan(basePackages = "com.example.myapp")
public class AppConfig {
    // 必要时使用显式Bean
}</code>
Salin selepas log masuk
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!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan