Kata pengantar
Javaconfig ternyata merupakan subprokjen musim semi. Ini memberikan informasi definisi kacang melalui kelas Java. Dalam versi Spring4, Javaconfig telah secara resmi menjadi fungsi inti dari Spring4.
Artikel ini akan memperkenalkan secara rinci konten yang relevan tentang konfigurasi berdasarkan kelas Java di musim semi. Saya tidak akan mengatakan banyak hal di bawah. Mari kita lihat perkenalan terperinci bersama -sama.
1 Definisi Bean
Pojo biasa dapat memberikan informasi definisi kacang untuk kontainer musim semi selama anotasi @Configuration ditandai.
@ConfigurationPublic SystemConfig { / ** * Tentukan bean dan instantiate * * @return * / @bean Userdao Ususdao () {return new Ususdao (); } @Bean DeptDAO DeptDAO () {return new Deptdao (); } / ** * Tentukan UserserService dan suntikkan userdao dan deptdao * * @return * / @bean UserServerService UserService () {Userservice Service = UserserService baru (); service.setuserdao (userdao ()); service.setdeptdao (deptdao ()); layanan pengembalian; }}Metode kelas ini dijelaskan oleh anotasi @Bean, yaitu, untuk mendefinisikan kacang. Jenis kacang ditentukan oleh jenis nilai metode pengembalian metode. Nama default ke nama metode dan nama metode. Anda juga dapat menentukan nama kacang dengan memasukkan parameter, seperti @bean (name = "xxx"). Badan metode yang ditandai oleh @Bean memberikan logika untuk membuat instantiate kacang.
Konfigurasi di atas setara dengan XML berikut:
<bean id = "userdao"/> <bean id = "deptdao"/> <bean id = "Userservice" p: userdao-ref = "userdao" p: deptdao-ref = "deptdao"/>
Dibandingkan dengan metode konfigurasi berdasarkan kelas Java, yang didasarkan pada XML atau metode konfigurasi berbasis anotasi -
Karena kelas anotasi @Configuration itu sendiri memiliki @Component, kelas -kelas ini dapat disuntikkan ke dalam kacang lain seperti kacang biasa.
@ConfigurationPublic Class ApplicationConfig {@Autowired private SystemConfig SystemConfig; @Bean Otoritas Otoritas Publik OtoritasService () {Layanan Otoritas Layanan = Otoritas Baru (); service.setuserdao (SystemConfig.userdao ()); service.setdeptdao (SystemConfig.DeptDao ()); layanan pengembalian; }}Spring menggunakan peningkatan AOP untuk semua metode yang ditandai @Bean di kelas konfigurasi, memperkenalkan logika manajemen siklus hidup dari kacang. Misalnya, SystemConfig.userdao () di atas, ia mengembalikan singleton yang sesuai dengan kacang.
Di @Bean, kita juga dapat mengontrol ruang lingkup kacang dengan anotasi anotasi @scope:
@Scope ("prototipe")@beanpublic deptdao deptdao () {return new deptdao ();}Dengan cara ini, setiap panggilan ke metode deptdao () akan mengembalikan contoh baru:
AssertNotSame (AuthorityService.getDeptDao (). HashCode (), AuthorityService.getdeptDao (). HashCode ());
Catatan: Gunakan kelas berbasis Java untuk konfigurasi, perpustakaan Spring AOP dan CGLIB harus dimasukkan dalam ClassPath.
2 Mulai wadah musim semi
2.1 Gunakan hanya kelas @configuration
Anda dapat menggunakan konstruktor kelas AnnotationConfigApplicationContext untuk lulus di kelas Java bertanda @configuration untuk memulai wadah musim semi.
ApplicationContext Context = New AnnotationConfigApplicationContext (SystemConfig.class); Userservice UsserService = (Userservice) Context.getBean ("Userservice"); AssertNotNull (UserserService);Jika ada beberapa kelas konfigurasi @Configuration, Anda dapat mendaftarkannya di AnnotationConfigappLicationContext dan kemudian menerapkan kelas konfigurasi ini dengan menyegarkan wadah:
AnnotationConfigApplicationContext Context = New AnnotationConfigApplicationContext (); // Daftarkan beberapa kelas konfigurasi Context.Register (SystemConfig.Class); Context.Register (ApplicationConfig.class); config = context.getBean (applicationConfig.class); assertnotnull (config);
Anda juga dapat merakit beberapa kelas konfigurasi menjadi satu kelas konfigurasi melalui @import, dan kemudian cukup daftarkan kelas konfigurasi yang dirakit untuk memulai wadah:
@Configuration @impor (SystemConfig.class) kelas publik ApplicationConfig2 {@Autowired private SystemConfig SystemConfig; @Bean Otoritas Otoritas Publik OtoritasService () {Layanan Otoritas Layanan = Otoritas Baru (); service.setuserdao (SystemConfig.userdao ()); service.setdeptdao (SystemConfig.DeptDao ()); layanan pengembalian; }}Tes unit:
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext (applicationConfig2.class); ApplicationConfig2 config = context.getBean (applicationConfig2.class); assertnotnull (config); final otoritas OtoritasService = config.AuthorityService (); AssertNotnull (AuthorityService.getdeptDao ()); assertNotSame (otoritas service.getdeptdao (). hashcode (), otoritas layanan .getdeptdao (). HashCode ());
2.2 Menggunakan file XML untuk merujuk ke konfigurasi kelas @configuration
Kelas konfigurasi yang ditandai @configuration juga merupakan kacang, sehingga juga dapat dipindai oleh Spring's <Context: Component-Scan>. Oleh karena itu, jika Anda ingin merakit kelas konfigurasi ke dalam file konfigurasi XML dan mulai pegas melalui file konfigurasi XML, Anda hanya perlu memindai kelas konfigurasi yang sesuai melalui <Context: Component-Scan> di XML.
<konteks: komponen-scan-package = "net.deniro.spring4.conf" sumber daya-pola = "applicationConfig2.class" />
2.3 Konfigurasi file XML referensi di kelas @configuration
Di kelas konfigurasi @configuration, Anda dapat secara langsung memperkenalkan file konfigurasi XML melalui @Importresource, sehingga Anda dapat secara langsung merujuk ke kacang yang ditentukan dalam file konfigurasi XML melalui @Autowired.
File Konfigurasi:
<bean id = "groupdao"/> <bean id = "roledao"/>
@Configuration class:
@Importresource ("ClassPath: Beans5-11.xml") @ConfigurationPublic Class Public ServiceConfig {@Bean @Autowired Hubungan Masyarakat Hubungan Hubungan (Groupdao Groupdao, Roledao Roledao) {Hubungan Layanan Layanan = Relationservice baru (); service.setgroupdao (groupdao); service.setroledao (roledao); layanan pengembalian; }}Tes unit:
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext (serviceConfig.class); serviceConfig config = context.getbean (serviceConfig.class); Context.Conts. .getbean ("roledao")); assertnotnull (service.getroledao ());Selama informasi definisi ini dari berbagai bentuk kacang dapat dimuat ke dalam wadah pegas, Spring dapat secara cerdas melengkapi perakitan di antara kacang.
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.