Beim Übertragen von SpringMVC -Projekt auf Springboot wurden die folgenden Dinge hauptsächlich durchgeführt
Dieser Artikel wird nicht nur vorgestellt, was und wie es zu tun ist, sondern auch einen unnötigen Unsinn. Für einige Diskussionen über das Prinzip sollten Sie auch den Grund kennen.
Profilkonfiguration
In herkömmlichen Frühlingsprojekten besteht die Konfigurationsmethode mehrerer Profile darin, mehrere Profile in die Datei pom.xml zu schreiben und dann die ausgewählte Profilumgebung durch Ausführen einer Maven -Datei vor dem Starten des Projekts vorzuladen. Nach dem Laden wird beim Ausführen des Projekts entschieden, welche .Properties -Datei in der globalen Variablen basierend auf der geladenen Umgebung geladen werden soll.
Das Verwalten mehrerer Profile im Springboot ist sehr einfach.
Sie können das Profil beim Ausführen des JAR -Pakets mit der Befehlszeile auswählen
Java -Jar Beispiel.jar - -spring.profiles.active = Test
Oder konfigurieren Sie es in der globalen Konfigurationsanwendung.Properties
Fügen Sie Spring.profiles.active = Test in application.Properties hinzu
Beide oben genannten Methoden können das "Test" -Profil starten, erstere hat eine höhere Priorität bei der Ausführung als das letztere.
(In Springboot verwenden diese beiden Methoden übrigens die Methode "externer Konfiguration", um die Umgebung zu bearbeiten und zu ersetzen).)
Zusätzlich werden jedes unabhängige Profil im Format "application-xxx.properties" für jede verschiedene Umgebung konfiguriert, zum Beispiel:
Wenn wir testen müssen, ob das Profil normal geladen ist, können wir es in die entsprechende .properties -Datei schreiben
Server.port = 9080
Sie können sehen, ob dieser Port beim Starts begonnen wurde.
Hier können Sie die Reihenfolge erwähnen, in der Springboot Konfigurationsdateien lädt
Globale Variablen werden aus der Eigenschaftendatei gelesen
Im vorherigen Abschnitt haben wir die Eigenschaftenkonfiguration für verschiedene Umgebungen geschrieben. Hier schreiben wir darüber, ob diese Eigenschaften in globale Variablen geschrieben sind, was für direkte Anrufe an anderen Orten später bequem ist.
/*** Globale Variable*/public class Global {public static String BeispielPath; @Value ("$ {example_path}") public void setExamplePath (String -Beispiel) {global.examplepath = examplePath; }} Auf diese Weise werden wir die Datei .Properties in die
Beispiel_path = http: // localhost: 9090
Diese Eigenschaft wird in die globale Variable gelesen.
Datenquelle und MyBatis -Konfiguration
Verwenden Sie im traditionellen Frühlingsprojekt MyBatis, um eine Verbindung zur Datenbank herzustellen
All dies ist in der XML -Konfigurationsdatei konfiguriert, die ziemlich umständlich ist. Versuchen Sie im Springboot, eine solche XML -Konfiguration zu vermeiden.
MyBatis hat jetzt den Springboot unterstützt. Wir müssen nur die Abhängigkeit von MyBatis-Spring-Boot-Starter-Starter hinzufügen, und es wird für uns Folgendes erfolgen:
In der MyBatis -Konfiguration von Springboot müssen wir also Folgendes ausführen:
Füllen Sie die Datenbankinformationen in Anwendung- {Profil} .Properties ein, zum Beispiel:
Spring.DataSource.url = jdbc: oracle: dünn:@// localhost: 1234/examplepring.dataSource.username = rootspring.datasource.password = 123456spring.datas OURCE.DRIVER-CLASS-NAME = Oracle.jdbc.driver.oracledRiverSpring.datasource.maxactive = 10Spring.DataSource.maxidle = 5spring.datasource.maxwait = -1
Auf diese Weise registrieren wir die DataSource -Bean im Frühjahrskontext.
Erstellen Sie eine MyBatisconfig -Datei und ersetzen Sie XML durch Java:
/*** Erstellt von Wutaoyu am 2017/12/7. */@Configuration@EnableTransactionManagement@mapperscan ("com.example.db.dao") öffentliche Klasse MyBatisconfig {@autowired private dataSource dataSource; @Bean (name = "sqlSessionFactory") public sqlSessionFactory sqlSessionFactoryBean () {SQLSessionFactoryBean SQLSession = new SQLSessionFactoryBean (); SQLSession.setDataSource (DataSource); Versuchen Sie {// XML Directory ResourcePergerNresolver Resolver = new pathMatchingResourcePenNresolver (); sqlSession.setMapperLocations (Resolver.getResources ("ClassPath: Mapping/*. XML")); return sqlSession.getObject (); } catch (Ausnahme e) {e.printstacktrace (); neue runimeexception (e) werfen; }} @Bean public SQLSessionTemplate SQLSessionTemplate (SQLSessionFactory SQLSessionFactory) {Neue SQLSessionTemplate zurückgeben (SQLSessionFactory); } @Bean Public PlatformTransactionManager AnnotationDriventransactionManager () {Neue DataSourcetransactionManager (DataSource) zurückgeben; } @Bean (name = "explesequence") public orraclesequencemaxValueIncrementer BeispielPlesequenceBean () {oraclesequencemaxValueIncrementer examplesequence = new oraclesequencemaxvaluEinCrementer (); Beispielplesequence.SetIncrementername ("example_seq"); BeispielePlesequence.SetDataSource (DataSource); Rückgabebuchplesequenz; }} @Mapperscan soll den Mapper unter diesem Paket scannen.
Darüber hinaus besteht der Ort von mapper.xml hier zum Erstellen eines Zuordnungsordners im Ressourcenordner und platziert ihn unten.
Die Funktion hier ähnelt XML. Es soll die herkömmliche XML -Expressionsmethode in .java -Dateien beschreiben und im Wesentlichen Datenquelle Schritt für Schritt injizieren.
Da das Beispiel eine Oracle -Datenbank verwendet, ist das letzte Beispielplesequenz ein Beispiel, um zu veranschaulichen, wie eine Sequenz hinzugefügt wird.
Annotation von Schnittstellen an alle Mapper @mapper
Zum Beispiel:
@Mapperpublic interface usermapper {...} Protokolldateikonfiguration
Der Logback unterstützt die externe Konfiguration in Form von Eigenschaften, aber für relativ detaillierte Konfigurationen ist es weiterhin erforderlich, die XML -Konfiguration zu verwenden.
Damit die XML-Datei einige Pfade aus der Datei .Properties, statische Konfigurationen, für die häufige Änderungen erforderlich sind, müssen sie in logback-pring.xml konfiguriert werden
<Property Resource = "Application.Properties" /> <Eigenschaft name = "log.root.level" value = "$ {log.root.level}" /> <Eigenschaft name = "path" value = "$ {log.path}" /> <Eigenschaft name = "log.modename" value = "$ {log.modul}}" /> " />" /> " />" /> " />" /> " />" /> " />" /> " />" /> " />" /> " />" /> " />" /> " />" Auf diese Weise können Sie die Datei application.Properties in die
log.path =/home/logs/examplelog.root.level = infolog.module = Beispiel
Lesen Sie es in logback-pring.xml durch und nennen Sie es dann.
Webconfig -Konfiguration
Die Hauptfunktion von WebConfig besteht darin, Web.xml und Spring-MVC.xml für eine grundlegende Konfiguration zu ersetzen.
1. Über web.xml
Herkömmliche Spring -Projekte konfigurieren alle eine Web.xml -Datei. Die Funktion dieser Datei lautet: Wenn wir das Kriegspaket in den Anwendungscontainer (z. B. Tomcat) zum Ausführen einfügen, lädt der Container den Filter (Filter), das Servlet, die Fehlerpage, die Begrüßungsliste, der Hörer (Listener), die Kontext-Param (Kontextparameter), Ressourcenref (Ressourcenkonfiguration) und andere Konfigurationen nach Web.xml.
Der Hörer mit dem ContextloaderListener wird hier geladen, um die Konfigurationsinformationen des ApplicationContext beim Starten des Containers automatisch zusammenzustellen.
<Hörer> <Hörer-Klasse> org.springframework.web.context.contextloaderListener </Listener-Klasse> </Listener>
Dieser ApplicationContext ist der Kern des Frühlings -IOC (von Beanfactory geerbt), und alle Singleton -Bohnen werden zu diesem Zeitpunkt instanziiert.
Außerdem wird hier ein sehr wichtiger DispatcherServlet in SpringMVC geladen, und es wird festgelegt, welche XML -Datei zum Konfigurieren des DispatcherServlets ist.
<servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <Load-on-Startups> 1 </load-on-startup> <!-<async-unterstützt> true </async-unterstützt>-> </servlet>
2. Über Spring-Mvc.xml
Spring-MVC.xml ist eine SpringMVC-Konfigurationsdatei. Hier können wir Bohnen konfigurieren, die angepasst werden müssen, z.
All das hat nichts mit Springboot zu tun, hauptsächlich, um den Grund und warum zu wissen. Wenn Sie nicht interessiert sind, können Sie es ignorieren.
Sprechen wir über die Springboot -Konfiguration. Springboot hat das Sprichwort, dass "Konvention besser ist als die Konfiguration", was bedeutet, die vereinbarte Methode zu verwenden, anstatt spezifisch gezielte Konfiguration (Konfiguration, wenn eine spezielle Konfiguration erforderlich ist).
Nach der Einführung der Abhängigkeit von Spring-Boot-Starter-Web enthält Spring-Boot-Starter-Web eine Spring-Boot-Autokonfigur.
Mit dieser Abhängigkeit können Sie die Annotation von @EnableAutoCongiguration verwenden. Diese Annotation erraten die Federkonfiguration, die Sie auf der Grundlage der eingeführten Abhängigkeiten benötigen, und hilft Ihnen bei der Konfiguration. Da Spring-Boot-Starter-Web eingeführt wurde, konfiguriert diese Annotation die webbezogene Konfiguration.
Darüber hinaus wurde die Annotation @EnableAutoCongiguration in die Annotation @springbootApplication aufgenommen. Anmerkende @springbootApplication in der Startup -Klasse -BeispieleerVerApplication und Sie können das Web automatisch konfigurieren, um es zu konfigurieren.
Natürlich haben wir möglicherweise einige spezielle Konfigurationen, und zu diesem Zeitpunkt können wir eine Webconfig zum Anpassen erstellen
/*** Erstellt von Wutaoyu am 2017/12/8. */ @ConfigurationPublic class webconfig erweitert webmvcconFigurerAdapter {@Override public void configuremessageConverters (Liste <httpMessageConverter <? >> konverters {konverters.add (marshallinghttpmessageConverter ()); } public MarshallinghttpMessageConverter MarshallinghttpMessageConverter () {MarshallinghttpMessageConverter MarshallinghttpMessageConverter = New MarshallinghttpMessageConverter (); Liste <MediasType> mediatypes = new ArrayList <MediasType> (); minytypes.add (mediType.text_xml); in mentypes.add (mediType.application_xml); Xstreammarshaller Xstreammarshaller = new Xstreammarshaller (); MarshallinghttpMessageConverter.SetSupportedMediTypes (mediitypes); MarshallinghttpMessageConverter.Setmarshaller (Xstreammarshaller); MarshallinghttpMessageConverter.Setunmarshaller (Xstreammarshaller); return marshallinghttpMessageConverter; } // Konfigurationsdatei upload @Bean (name = {"multipartresolver"}) public multipartresolver multipartresolver () {commonsMultipArtresolver CommonsMultipArtresolver = new commonsMultipArtresolver (); commonsMultipArtresolver.setDefaultCoding ("utf-8"); CommonsMultipArtresolver.setMaxUploadsize (10485760000L); commonsMultipArtresolver.setMaxinMemorySize (40960); return commonsMultipARtresolver; } // Exception -Handling @Bean public exceptionSandler exceptionResolver () {exceptionHandler exceptionHandler = new ExceptsHandler (); Return ExceptionHandler; } // interceptor @Override public void addInterceptors (InterceptorRegistry Registry) {Registry.AdDInterceptor (neuer Loginterceptor ()). AddPathPatterns ("/**"); Super.AdDInterceptors (Registrierung); }}Ich habe ein paar Dinge in dieser Beispieldatei gemacht:
Überschüssige Bohneninjektion entfernen
Dies ist eine Ablenkung, aber es ist auch eines der Probleme, die ich tatsächlich begegnet bin.
Beim Tatsächlich fand ich einige Probleme, die bei herkömmlichen Frühlingsprojekten keine Fehler meldeten, bei denen es sich um eine unnötige Bean -Injektion handelt.
In traditionellen Frühlingsprojekten gibt es keinen Fehler, aber in Springboot -Projekten wird berichtet. Ich denke, das liegt daran, dass die mit Bohnen injizierte Klassenmethode relativ einfach angegeben wird, sie wird mit einigen Bohnen wiederholt, die automatisch vom Springboot selbst konfiguriert sind, und ein Fehler wird gemeldet.
Entfernen Sie also einige Bohnen, die nicht injiziert werden müssen.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.