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
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()); } }
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
@Configuration public class DataConfig { @Bean public DataSource dataSource() { // 配置并返回数据源 } } @Configuration public class ServiceConfig { @Bean public UserService userService() { return new UserServiceImpl(); } }
@Value
4. <条> Gunakan syarat Bean @ConfigurationProperties
@Configuration public class AppConfig { @Value("${app.name}") private String appName; @Bean public AppService appService() { return new AppService(appName); } }
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()); } }
yang terdesentralisasi. @ConfigurationProperties
@Value
@Configuration public class DataConfig { @Bean public DataSource dataSource() { // 配置并返回数据源 } } @Configuration public class ServiceConfig { @Bean public UserService userService() { return new UserServiceImpl(); } }
@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); } }
<载> 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
@Configuration @ComponentScan(basePackages = "com.example.myapp") public class AppConfig { // 必要时使用显式Bean }
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!