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
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
Kelas ini menjadi sumber definisi kacang, dan musim bunga akan menggunakan definisi ini untuk menetapkan konteks aplikasi.
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
), kelas anotasi boleh ditakrifkan secara eksplisit oleh, dan musim bunga dibenarkan untuk mengimbas dan mendaftarkan kacang lain secara automatik.
@ComponentScan
Benarkan suntikan @SpringBootApplication
@Configuration
Contoh Asas
@Configuration
<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>
myController()
myService()
Menurut fungsi (seperti DataConfig, ServiceConfig, dan WebConfig), konfigurasi dibahagikan kepada pelbagai kelas. Ini meningkatkan kebolehbacaan dan penyelenggaraan. MyService
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>
@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>
<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>
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>
@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>
Kaedah @bean Elakkan kaedah anotasi @Lazy
re -muat turun, kerana ia boleh menyebabkan hasil yang tidak dijangka.
Sekatan agen Mekanisme agensi @Bean
tidak berkesan apabila kelas tidak muktamad. Elakkan menandakan kelas konfigurasi ke akhir.
Gunakan @component dengan teliti Elakkan pencampuran dan @Configuration
dalam kelas yang sama. Ini boleh membawa kepada tingkah laku yang tidak dijangka, kerana kaedah pemprosesan
menggunakan contoh suntikan canggih @Component
@Configuration
@Configuration
<code class="language-java">@Configuration @ComponentScan(basePackages = "com.example.myapp") public class AppConfig { // 必要时使用显式Bean }</code>
DataSource
JdbcTemplate
Amalan Terbaik @Configuration
Atas ialah kandungan terperinci Spring-: @Configuration-in-Depth. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!