Dalam proses mentransfer proyek SpringMVC ke Springboot, hal -hal berikut ini terutama dilakukan
Selain memperkenalkan apa dan bagaimana melakukannya, artikel ini akan memiliki banyak omong kosong yang tidak perlu. Untuk beberapa diskusi tentang prinsip ini, Anda juga harus tahu alasannya.
Konfigurasi Profil
Dalam proyek musim semi tradisional, metode konfigurasi beberapa profil adalah untuk menulis beberapa profil ke dalam file pom.xml, dan kemudian memuat lingkungan profil yang dipilih dengan menjalankan file Maven sebelum memulai proyek. Setelah memuat, saat mengeksekusi proyek, ia akan memutuskan file .Properti mana yang akan dimuat ke variabel global berdasarkan lingkungan yang dimuat.
Dan mengelola banyak profil di Springboot sangat sederhana.
Anda dapat memilih profil saat menjalankan paket JAR menggunakan baris perintah
java -jar example.jar --spring.profiles.active = tes
Atau konfigurasinya di aplikasi konfigurasi global.properties
Tambahkan spring.profiles.active = tes di application.properties
Kedua metode di atas dapat memulai profil "tes", yang pertama memiliki prioritas yang lebih tinggi dalam eksekusi daripada yang terakhir.
(Ngomong -ngomong, di Springboot, kedua metode ini pada dasarnya menggunakan metode "Konfigurasi Eksternal" untuk mengedit dan mengganti lingkungan)
Selain itu, setiap profil independen dikonfigurasi dalam format "application-xxx.properties" untuk setiap lingkungan yang berbeda, misalnya:
Ketika kita perlu menguji apakah profil dimuat secara normal, kita dapat menulisnya di file .properties yang sesuai
server.port = 9080
Anda dapat melihat apakah port ini telah dimulai pada saat startup.
Di sini Anda dapat menyebutkan pesanan di mana Springboot memuat file konfigurasi
Variabel global dibaca dari file properti
Pada bagian sebelumnya, kami menulis konfigurasi properti untuk lingkungan yang berbeda. Di sini kita akan menulis tentang apakah properti ini ditulis dalam variabel global, yang nyaman untuk panggilan langsung di tempat lain nanti.
/*** variabel global*/kelas publik global {public static String examphpath; @Value ("$ {example_path}") public void setExamphPath (String Exampe) {Global.examplePath = examplePath; }} Dengan cara ini, kami akan meletakkan file .properties di
example_path = http: // localhost: 9090
Properti ini dibacakan ke dalam variabel global.
Sumber data dan konfigurasi mybatis
Dalam proyek musim semi tradisional, gunakan mybatis untuk terhubung ke database
Semua ini dikonfigurasi dalam file konfigurasi XML, yang cukup rumit. Di Springboot, cobalah untuk menghindari konfigurasi XML tersebut.
Mybatis sekarang telah memberikan dukungan untuk Springboot. Kami hanya perlu menambahkan ketergantungan mybatis-spring-boot-starter, dan itu akan melakukan hal berikut untuk kami:
Jadi, dalam konfigurasi mybatis springboot, kita perlu melakukan hal berikut:
Isi informasi database di Application- {profile} .properties, misalnya:
spring.datasource.url = jdbc: oracle: tipis:@// localhost: 1234/contohpring.datasource.username = rootspring.datasource.password = 123456spring.datas Ource.driver-class-name = oracle.jdbc.driver.oracledriverspring.datasource.maxactive = 10spring.datasource.maxidle = 5spring.datasource.maxwait = -1
Dengan cara ini, kami mendaftarkan kacang data dalam konteks musim semi.
Buat file mybatisconfig dan ganti xml dengan java:
/*** Dibuat oleh Wutaoyu pada 2017/12/7. */@Configuration@enableTransActionManagement@mapperscan ("com.example.db.dao") kelas publik mybatisconfig {@Autowired private DataSource dataSource; @Bean (name = "sqlSessionFactory") public SQLSessionFactory sqlSessionFactoryBean () {sqlSessionFactoryBean sqlSession = SQLSessionFactoryBean () baru; SQLSession.SetDataSource (DataSource); Coba {// Tambahkan XML Directory ResourcePatternResolver resolver = baru PathMatchingResourcePatternResolver (); sqlsession.setMapperLocations (resolver.getResources ("classpath: pemetaan/*. xml")); return sqlSession.getObject (); } catch (Exception e) {E.PrintStackTrace (); Lempar RuntimeException baru (E); }} @Bean Public SqlSessionTemplate SQLSessionTemplate (SQLSessionFactory SQLSessionFactory) {return SQLSESTIONTEMPLATE BARU (SQLSESSESTFACTORY); } @Bean PRATTL PLATPLETTRANSACTIFMANGERNAGER ANNOTASIDRIVENTRANSACTIONMANAGER () {return New DataSourCetRansActionManager (DataSource); } @Bean (name = "exampleSequence") Publik oraclesequenceMaxValueINCrementer exampleSquencebean () {oraclesequenceMaxValueINCrementer exampleSquence = oracleSequenceMaxValueINCREMENTER baru (); exexcesequence.setincrementEname ("example_seq"); exexcesequence.setDataSource (DataSource); kembalikan contohnya; }} @MappersCan akan memindai mapper di bawah paket ini.
Selain itu, lokasi mapper.xml di sini adalah untuk membuat folder pemetaan di bawah folder sumber daya dan letakkan di bawah ini.
Fungsi di sini mirip dengan XML. Ini untuk menggambarkan metode ekspresi XML tradisional dalam file .java, dan pada dasarnya menyuntikkan DataSource langkah demi langkah.
Karena contoh ini menggunakan database Oracle, contoh terakhir adalah contoh untuk menggambarkan cara menambahkan urutan.
Anotasi antarmuka untuk semua pemetaan @mapper
Misalnya:
@MapperPublic Interface Usermapper {...} Konfigurasi File Log
Logback mendukung konfigurasi eksternal dalam bentuk properti, tetapi untuk konfigurasi yang relatif terperinci, masih perlu menggunakan konfigurasi XML.
Agar file XML dapat membaca beberapa jalur dari file .properties, konfigurasi statis yang mungkin memerlukan modifikasi yang sering, perlu untuk mengkonfigurasinya di logback-spring.xml
<sumber daya properti = "application.properties" /> <name properti = "log.root.level" value = "$ {log.root.level}" /> <name properti = "log.path" value = "$ {log.path}" /> <nama properti = "log.moduleName" value = "$ {log.mod {$ {MODULE =" LOG.MODULEName "value =" $ {$ {MODULE = "LOG.MODULENAME" value = "$ {$ {MODULE =" Dengan cara ini Anda dapat meletakkan file application.properties di
log.path =/home/logs/examplelog.root.level = infolog.module = contoh
Bacalah ke Logback-Spring.xml lalu sebut saja.
Konfigurasi WebConfig
Fungsi utama WebConfig adalah mengganti web.xml dan spring-mvc.xml untuk beberapa konfigurasi dasar.
1. Tentang web.xml
Proyek Musim Semi Tradisional Semua mengkonfigurasi file web.xml. Fungsi file ini adalah: Ketika kami memasukkan paket perang ke dalam wadah aplikasi (seperti tomcat) untuk dijalankan, wadah akan memuat filter (filter), servlet, kesalahan halaman, sambutan file, pendengar (pendengar), konteks-param (parameter konteks), resource-ref (konfigurasi sumber daya) dan konfigurasi lainnya menurut Web.xml.
Pendengar termasuk ContextLoaderListener dimuat di sini untuk secara otomatis merakit informasi konfigurasi dari ApplicationContext saat memulai wadah.
<listener> <Distener-Class> org.springframework.web.context.contextLoaderListener </listener-class> </engeaner>
ApplicationContext ini adalah inti dari Spring IOC (diwarisi dari beanfactory), dan semua kacang singleton akan dipakai saat ini.
Juga, DispatcherServlet yang sangat penting di SpringMVC juga dimuat di sini, dan ditentukan file XML mana yang untuk mengonfigurasi DispatcherServlet.
<servlet> <servlet-name> springmvc </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <Ilin-param> <param-name> ContextConfigLocation </param-name> <param-value> classpath: Spring-mvc. <Boad-on-startup> 1 </boid-on-startup> <!-<Sinync-didukung> true </supported>-> </servlet>
2. Tentang spring-mvc.xml
Spring-mvc.xml adalah file konfigurasi SpringMVC. Di sini kita dapat mengonfigurasi kacang yang perlu disesuaikan, seperti viewResolver, multipartresolver, konverter pesan http, pencegat khusus, dll.
Semua hal di atas tidak ada hubungannya dengan Springboot, terutama untuk mengetahui alasannya dan mengapa. Jika Anda tidak tertarik, Anda dapat mengabaikannya.
Mari kita bicara tentang konfigurasi Springboot. Springboot memiliki pepatah bahwa "konvensi lebih baik dari konfigurasi", yang berarti mencoba menggunakan metode yang disepakati, daripada konfigurasi yang ditargetkan secara khusus (konfigurasi saat konfigurasi khusus diperlukan).
Setelah memperkenalkan ketergantungan "di luar kotak" dari-boot-boot-starter-web, Spring-Boot-Starter-Web berisi Autoconfigure Spring-Boot.
Dengan ketergantungan ini, Anda dapat menggunakan anotasi @EnableAutocongiguration. Anotasi ini akan menebak konfigurasi pegas yang Anda butuhkan berdasarkan dependensi yang diperkenalkan dan membantu Anda mengonfigurasinya. Karena spring-boot-starter-WEB telah diperkenalkan, anotasi ini akan mengonfigurasi konfigurasi terkait web.
Selain itu, anotasi @EnableAutocongiguration telah dimasukkan dalam anotasi @springbootApplication. Jadi cukup anotasi @springbootApplication di kelas startup Contoh ContohPerapplication dan Anda dapat secara otomatis mengonfigurasi web untuk mengonfigurasinya.
Tentu saja, kami mungkin memiliki beberapa konfigurasi khusus, dan saat ini kami dapat membuat WebConfig untuk menyesuaikan
/*** Dibuat oleh Wutaoyu pada 2017/12/8. */ @Configurationpublic kelas webconfig memperluas webmvcconfigurerAdapter {@Override public void configureMessageConVerters (Daftar <httpmessageConverter <? >> Converters) {converters.add (MarshallingHtPMessageConverter ()); } public MarshallingHttpMessageConverter MarshallingHttpMessageConverter () {MarshallingHttpMessageConverter MarshallingHttpMessageConverter = MarshallingHttpMessageConverter (); Daftar <Mediatype> Mediatypes = Daftar ArrayList baru <mediatype> (); mediatypes.add (mediatype.text_xml); mediatypes.add (mediatype.application_xml); XStreamMarshaller xStreamMarshaller = new XStreamMarShaller (); marshallinghttpmessageConverter.setsupportedMediatypes (mediatypes); MarshallingHttpMessageConverter.setMarshaller (XStreamMarShaller); MarshallingHttpMessageConverter.setunmarshaller (XStreammarshaller); return MarshallingHttpMessageConverter; } // konfigurasi unggahan file @bean (name = {"multipartresolver"}) Public Multipartresolver MultipARTResolver () {CommonsMultiPartresolver CommonsMultiPartresolver = new CommonsMultiparResolver (); Commonsmultipartresolver.setDefaultEncoding ("UTF-8"); Commonsmultipartresolver.setMaxUploadsize (10485760000L); Commonsmultipartresolver.setmaxinMemorySize (40960); return commonsmultipartresolver; } // Pengecualian penanganan @Bean Public ExceptionHandler ExceptionResolver () {ExceptionHandler ExceptionHandler = ExceptionHandler baru (); mengembalikan ExceptionHandler; } // Interceptor @Override public void addInterceptors (intercepTorRegistry registry) {registry.addInterceptor (new Loginterceptor ()). AddPathPatterns ("/**"); Super.AddInterceptors (Registry); }}Saya melakukan beberapa hal dalam file sampel ini:
Hapus kelebihan injeksi kacang
Ini adalah gangguan, tetapi juga salah satu masalah yang sebenarnya saya temui.
Ketika benar -benar menjalankan proyek Springboot, saya menemukan beberapa masalah yang tidak melaporkan kesalahan dalam proyek musim semi tradisional, yang merupakan injeksi kacang yang tidak perlu.
Dalam proyek musim semi tradisional, tidak ada kesalahan, tetapi dalam proyek Springboot, dilaporkan. Saya kira itu karena ketika metode kelas yang disuntikkan ke bean diberikan dengan cara yang relatif sederhana, itu akan diulangi dengan beberapa kacang secara otomatis dikonfigurasi oleh springboot itu sendiri, dan kesalahan akan dilaporkan.
Jadi, lepaskan beberapa kacang yang tidak perlu disuntikkan.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.