Springboot ist ein Upgrade auf SpringMVC, das für die Codierung, Konfiguration, Bereitstellung und Überwachung einfacher ist.
Microservices
Microservices ist eine aufstrebende Softwarearchitektur, die eine große einzelne Anwendung und einen großen Dienst in Dutzende unterstützter Microservices aufteilt. Eine Microservice-Strategie kann die Arbeit erleichtern, die eine einzelne Komponente anstelle eines gesamten Anwendungsstapels skalieren und so Protokolle auf Service-Ebene erfüllt.
Die Spring bietet einen vollständigen Satz von Komponenten für Microservices - Springclound, und Spirngboot ist die Grundlage.
Das erste Springboot -Programm
Die hier verwendete Entwicklungssoftware ist die Intellij -Idee, die sich nicht wesentlich von der Sonnenfinsternis unterscheidet, mit einer kühleren Schnittstelle und leistungsfähigeren Funktionen. Android Studio basiert auf Intellij. Ich habe schon einmal Android Studio verwendet, und die Schnittstellen von beiden sind fast gleich.
Intellij IDEA Offizielle Website: http://www.jetbrains.com/idea/
Nach dem Konfigurieren von Maven, Tomcat, JDK können Sie es verwenden
Das von Maven konfigurierte Alibaba -Cloud -Bild des zentralen Lagerhauses, die Geschwindigkeit des Herunterladens von JAR -Paketen an dieser Adresse, wer weiß, wer es verwendet!
Einstellung.xml
.. <Mirrors> <Mirror> <ID> Alimaven </id> <name> Aliyun maven </name> <URL> http://maven.aliyun.com/nexus/content/groups/public/ </url> <mirrorof> zentral </minorof> </minor>. .
Erstellen Sie Springboot -Projekte mit Idee
Meine Ideenversion: Intellij IDEA 2016.3.1
Die Projektstruktur lautet:
Die Standard -Datei maven pom.xml für das Projekt
pom.xml
<? XSI: Schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion> 4.0.0 </modelversion> <gruppe> com.jxust </Groupid> </Groupid> </Groupid> </Groupid> </Groupid> </GroupID> </Groupid> </gruppen </Groupid> <artifactId> spirngbootDemo </artifactId> <version> 0.0.1-Snapshot </Version> <Packages> jar </packaging> <name> spirngbootDemo </name> <Bection> Demo-Projekt für Spring-Start </Beschreibung <artifactid> Spring-Boot-Starter-Parent </artifactid> <version> 1.4.2 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <groupId>org.springframework.boot</groupId> <artifactid> Spring-Boot-Maven-Plugin </artifactId> </plugin> </plugins> </build> </project>
Führen Sie die Hauptmethode der SpirngbootDemoapplication aus und Sie können mit dem Ausführen beginnen.
Weitere Startmethoden finden Sie im Video -Tutorial http://www.imooc.com/learn/767/
Konsolenausgabe:
"C:/Programmdateien/Java/Jdk1.8.0_91/bin/java" ..... .... ____ __ __ /// ___'_ __ __ _ (_) _ ___ __ / / / / / () / ___ | '_ |' _ | | / / / / / / / / / / / / / / / / / / / / / / / / / / / / / | | | | | | | | | | .__ || | _ | | _ | | _/__, | / / / / / ============================================ ____ / = / _ / _ / :: Spring Boot :: (v1.4.2.Release) 2016-12-16 14: 52.083 info 15872 --- Startup2016-12-16 14: 56: 52.215 Info 15872 --- [Haupt] SbcettomcatembededServletContainer: Tomcat begann mit Port (s): 8080 (http) 2016-12-16 14: 52.255 info 15872-[Main] Sbcettomcatemdededsdedgededsdedgededsdedgededsdedgededsdedgededsdedgededsdedgededsdedsedsdedsedsdedsedsedsedsedsedsedsedsedsedsedsedsedsdedsedsedsdeds. Port (s): 8080 (HTTP) 2016-12-16 14: 56: 52.255 Info 15872 --- [Haupt] SbcettomcatembeddedServletContainer: Tomcat begann in Port (s): 8080 (http) 2016-16 14: 56: 52.255 Info 15872- : Tomcat begann an port (s): 8080 (http) 2016-12-16 14: 56: 52.255 info 15872 --- [main] com.jxust.SpirngbootDemoapplication: Start SpirngbootDemoapplication in 7.795 Sekunden (JVM läuft für 9.177))
Von hier aus können Sie die Portnummer von Tomcat sehen. Da es keinen benutzerdefinierten Controller gibt, gibt es noch keine Ansicht. Lassen Sie uns eine Ansicht erstellen, die Hallo Springboot ausgibt!.
Erstellen Sie einen Hellocontroller, der sich unter dem Controller -Paket befindet
Hellocontroller.java
Paket com.jxust.controller; import org.springframework.web.bind.annotation.getMapping; @RequestMapping ("/hello") public String Says () {return "Hallo Springboot!"; }}@RestController Neue Annotation nach Spring4. Es stellt sich heraus, dass @ResponseBody die Rückgabe von JSON mit @Controller zusammenarbeiten muss. Jetzt ist einer die besten zwei
Geben Sie http: // localhost: 8080/Hallo im Browser ein, um den Satz zu geben. Hallo Springboot!
Benutzerdefinierte Eigenschaftskonfiguration
Die Datei application.Properties wird verwendet
Konfigurieren Sie die Portnummer und greifen Sie auf Präfix zu
application.PropertieServer.port = 8081server.context-path =/Springboot
Zusätzlich zur Verwendung von .Properties -Formatdateien können Sie auch die Konfigurationsdateien von .yml -Format (empfohlen) verwenden, was einfacher ist
application.yml
Löschen Sie die Datei Original Application.Properties
Achten Sie auf das Format, Räume können nicht fehlen
Rufen Sie den Attributwert in der Konfigurationsdatei ab
Wir können Daten auch in der Konfigurationsdatei konfigurieren und sie im Controller abrufen, z. B.:
application.yml
Server: Port: 8081 Kontext-Path: /SpringbootName: Xiaopang
HelloController erhält den Wert in der Konfigurationsdatei
Hellocontroller.java
.... @rastControllerPublic Class HelloConTroller {@Value ("$ {name}") privater String -Name; @RequestMapping (value = "/Hallo", method = requestMethod.get) public String sagt () {return name; }} Der zurückgegebene Wert des Namens
Diversifizierung von Wertkonfigurationsmethoden in Konfigurationsdateien
Die Werte der Konfigurationsdatei können mehrere oder kombiniert sein, wie z. B.:
application.yml
Name: Xiaopang Alter: 22 oder Name: Xiaopang Alter: 22Content: "Name: $ {Name}, Alter: $ {Alter}" oder Server: Port: 8081 Kontext-Path: /Springbootperson: Name: Xiaopang Alter: 22Die ersten beiden Konfigurationen sind gleich, um Werte zu erhalten, aber für diese Methode hat die Person zwei entsprechende Eigenschaften, die auf diese Weise behandelt werden müssen.
PersonProperties.java
paket com.jxust; import org.springframework.boot.context.properties.configurationProperties; import org.springframework.stereotype.comPonent;/** * Erstellt von Peng * Zeit: 2016/12/16 16:34 */@@@configuringPropties (prefix = persönlich). privates Ganzzahlalter; public String getName () {return name; } public void setName (String -Name) {this.name = name; } public Integer getage () {Return Age; } public void setage (Ganzzahl älter) {this.age = älter; }}Alt+Eingabeaufforderungen in die Verknüpfungsschlüssel einfügen, um Getter und Setter zu generieren
pom.xml muss die folgenden Abhängigkeiten hinzufügen, um Warnungen zu behandeln
<Depopentcy> <gruppe> org.springFramework.boot </Groupid> <artifactId> Spring-Boot-Konfigurationsprozessor </artifactid> <optional> true </optional> </abhängig>
Hellocontroller.java
Paket com.jxust.controller; import com.jxust.personProperties; import org.springframework.bean.factory.Annotation.autowired; org.springframework.web.bind.annotation.restController;/** * Erstellt von Peng * Zeit: 2016/12/15 20:55 */ @rastControllerPublic Class HelloConTroller {@autowired private personProperties personProperties; @RequestMapping (value = "/hello", method = requestMethod.get) public String Says () {return personProperties.getName ()+PersonProperties.getage (); }}Über die Konfigurationsdatei application.yml Mehrere Konfigurationssätze
Ähnlich der Internationalisierung von IL8N -Dateien, i18n_en_us.properties und i18n_zh_cn.properties
Dies kann die Verlegenheit häufiger Konfigurationsänderungen lösen
Es liegt bei der Konfigurationsdatei application.yml, um zu entscheiden, welche Konfigurationsdatei verwendet werden soll.
application.yml
Frühling: Profile: aktiv: a
application-a.yml
Server: Port: 8081 Kontext-Path: /Springbootperson: Name: Xiaoleiage: 21
application-b.yml
Server: Port: 8081 Kontext-Path: /Springbootperson: Name: Xiaopang Alter: 22
Springboot fügt, löscht und Änderungen, um Beispiele zu überprüfen
Vollständige Projektstruktur
Controller -Nutzung
Controller -Nutzung
@Controller CHU behandelt die HTTP -Anfrage
@RestController Neue Annotation nach dem Spring4, es stellt sich heraus, dass @ResponseBody mit @Controller zusammenarbeiten muss
@RequestMapping -URL -Mapping konfigurieren
Anfragen nach Ruhestil
Für Anmerkungen zu Methoden im Controller
@RequestMapping (value = "/Hallo", method = requestMethod.get) @RequestMapping (value = "/Hallo", method = requestMethod.post) @RequestMapping (value = "/Hallo", methode = requestMethod.delete) @RequestMapping (value = "/hallo", methody = adoption = adoption = adoption = ", method =", methode = adapting = adoption = ","/hallo ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", "/", "/Hallo", ",", ",", ",", ",", ",", ",", ","/","/Hallo ".
Springboot vereinfacht die obige Annotation
@Getmapping (value = "/girls") @postmaping (value = "/girls") @putmapping (value = "/girls/{id}") @DeletMapping (value = "/girls/{id}")Der Browser muss Anforderungen auf unterschiedliche Weise senden und Sie können das HTTPREQUESTER-Plug-In installieren, und der Firefox-Browser kann direkt nach dieser Komponente suchen.
Springdata-JPA
JPA Voller Name Java Persistence API.JPA beschreibt die Zuordnungsbeziehung einer Objektbeziehungstabelle über JDK 5.0-Annotation oder XML und behält die laufenden Entitätsobjekte in die Datenbank an.
Hibernate3.2+, TopLink 10.1.3 und OpenJPA bieten eine JPA -Implementierung.
Erstellen Sie eine MySQL -Datenbank mit JPA
pom.xml fügt JPA- und MySQL -Abhängigkeiten hinzu
<Depopentcy> <gruppe> org.springframework.boot </Groupid> <artifactId> Spring-Boot-Starter-Data-jpa </artifactid> </abhängig> <depeopy
Konfigurieren von JPA und Datenbank
application.yml
Spring: Profile: Active: A DataSource: Dreiber-Klasse-Name: com.mysql.jdbc.driver URL: JDBC: MySQL: //127.0.1: 3306/db_person Benutzername: Root Passwort: ROOT JPA: Hibernate: ddl-auto: show-SQL: show-SQL: that-sQL: that-sQL: that-sQL: that-sQL: that-SQL: that-sQL: that-sQL: the-sQL: the-SQLE: TRUEL: TRUEL: THEISE: STOUM: TRUEL: TRUEL: TRUE
Format ist wichtig
Sie müssen die db_person -Datenbank manuell erstellen
Erstellen Sie eine Personentitätsklasse, die der Datentabelle entspricht
Person.java
Paket com.jxust.entity; import Javax.Persistence.Entity; Import Javax.Persistence.generatedValue; Import Javax.Persistence.id;/** * Erstellt von Peng * Zeit: 2016/12/16 17:56 */ @EntityPublic -Person { @@Generated Veger id; privater Zeichenfolge Name; privates Ganzzahlalter; // Der Konstruktor muss public Person () {} public Integer getId () {return id; } public void setId (Integer id) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public Integer getage () {Return Age; } public void setage (Ganzzahl älter) {this.age = älter; }}Überprüfen Sie nach dem Ausführen des Projekts die Datenbank und die Tabellenperson wird automatisch erstellt
MySQL> Verwenden Person;+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | NULL | |+------------------------+----------+----------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Als nächstes können Sie die Tabelle Person hinzufügen, löschen, ändern und überprüfen
Erstellen Sie Controller Personcontroller.java
Erstellen Sie zunächst eine Schnittstelle personRepository, die sich unter dem DAO -Paket befindet. PersonController ruft die von JParepository geerbte Methode auf, um eine Interaktion mit der Datenbank zu erreichen.
Die Funktion dieser Personrepository -Schnittstelle ähnelt der Schnittstellenfunktion der DAO -Ebene im SSM -Framework. Im SSM -Framework führt die Serviceschicht indirekt die entsprechenden SQL -Anweisungen in der MyBatis -Datenbank -Mapping -Datei (.xml) über diese Schnittstelle aus und führt die Operationen des Hinzufügens, Löschens, Änderns und Durchsuchen der Datenbank durch. (Mapper implementiert automatisch die DAO -Schnittstelle)
PersonRepository.java
package com.jxust.dao;import com.jxust.entity.Person;import org.springframework.data.jpa.repository.JpaRepository;/** * Created by Peng * Time: 2016/12/16 18:07 */public interface PersonRepository extends JpaRepository<Person,Integer> {}Personcontroller.java
Paket com.jxust.controller; import com.jxust.dao.personrepository; import com.jxust.entity.person; import org.springframework.bean.factory.annotation org.springframework.web.bind.annotation.restController; importieren java.util.list;/** * Erstellt von Peng * Zeit: 2016/12/16 18:04 */ @rastControllerPublic -Klasse personcontroller {@autowired personRepositoryRepository; @Getmapping (value = "/person") private list <Person> personList () {return personRepository.findall (); }}Fügen Sie der Datenbank zwei Datenstücke hinzu
MySQL> Wählen Sie * von Person aus;+---+-----+------+| id | Alter | Name |+----+-------+-------+| 1 | 23 | Charlotte || 2 | 21 | Ma Dongmei |+----+-------+------+2 Zeilen in Set (0,04 Sek.)
Starten Sie die Projektausführungsanforderung http: // localhost: 8081/Springboot/Person
SQL -Anweisungen Ausgabe von der Konsole:
Hibernate: Wählen Sie Person0_.id als id1_0_, Person0_.age ASS2_0_, Person0_.name als name3_0_ von Person Person0_
Andere Methoden zum Hinzufügen, Löschen, Ändern und Überprüfen
Personcontroller.java
..../** * eine Person hinzufügen * * @param name * @param age * @return */@postmapping (value = "/person") personadd (@RequestParam ("Name") String -Name, @RequestParam ("Alter") Integer Age) {Person person = new Person (); Person.SetName (Name); Person.Setage (Alter); return personRepository.save (Person); }/** * eine Person abfragen * * @param id * @return */@getmapping (value = "/person/{id}") populs personfindone (@PathVariable ("id") Integer id) {return personRepository.findone (id); }/** * eine Person löschen * * @param id */@deletemapping (value = "/person/{id}") public void persondelete (@PathVariable ("id") Integer id) {PersonRepository.delete (id); }/** * Aktualisieren Sie eine Person * * @param id * @param name * @param ay * @return */@putmapping (value = "/person/{id}") personalupdate (@PathVariable ("id") Innegeber id, @RequestParam ("Name") String name, @Requestparam ("AGEGEGER") ZWEIGER AGERAGE {PERSAME "{@REQUESTPARAM (" AGEGER ") ZWEIGER AGES) {PERSON NEMAL (@Requestaram) (" AGEGEGE ") {persönlich) {@Requestaram (" AGEGER ") Integer Age Age ag. Person.setId (id); Person.SetName (Name); Person.Setage (Alter); return personRepository.save (Person); }Die entsprechende Anforderungsmethode lautet:
Einen Benutzer abfragen:
Fügen Sie einen Benutzer hinzu
Löschen Sie einen Benutzer (kein Rückgabewert)
Aktualisieren Sie einen Benutzer
Kann ich basierend auf dem Alter überprüfen? Die Antwort ist, dass es noch nicht möglich ist
Aus den Konsolenaussagen ist ersichtlich, dass die SQL -Anweisungen basierend auf der ID abgefragt werden
Hibernate: Wählen Sie Person0_.id als id1_0_0_, person0_.age as2_0_0_, person0_.name als name3_0_0_ von Person person0_ Where person0_.id =?
Nach Alter abfragen
Fügen Sie Personrepository FindByage (Ganzzahlalter) eine Methode hinzu
öffentliche Schnittstelle PersonRepository erweitert Jarepository <Person, Integer> { / ** * Abfragen nach Alter * Methodenname Fixe FindByageFügen Sie dem Personcontroller die entsprechende Abfragemethode hinzu
..../** * Abfragen nach Alter * @param Age * @return */@getmapping (value = "/person/älter/{alter}") publiclist <Person> personListbyage (@PathVariable ("älter") Ganzzahles Alter) {return personRepository.findbyage (älter); }Geben Sie die Anforderung ein
Die Konsole gibt eine SQL -Anweisung aus:
Hibernate: Wählen Sie person0_.id als id1_0_, person0_.age als Alter2_0_, person0_.name als name3_0_ von Person person0_ Where person0_.age =?
Transaktionsmanagement
Gleichzeitig werden zwei SQL -Anweisungen in einer Methode ausgeführt. Um zu verhindern, dass eine SQL -Anweisung erfolgreich ausführt und die andere SQL -Anweisung fehlschlägt, wird das Transaktionsmanagement eingeführt. @Transactional Transaction Annotation ist erforderlich, um die Methode hinzuzufügen.
Transaktionen gewährleisten die Integrität und Konsistenz von Datenbankdaten
Personservice.java
Persönlich controll
Paket com.jxust.service; import com.jxust.dao.personrepository; import com.jxust.entity.person; import org. 2016/12/16 19:30 */ @servicePublic Class personSservice {@autowired private personRepository PersonRepository; / *** Transaktionsverwaltungstest* Zwei Daten sind gleichzeitig erfolgreich oder sind nicht gleichzeitig erfolgreich* Stellen Sie die Integrität und Konsistenz von Datenbankdaten sicher*/ @transactional public void InsertTwo () {Person persona = new Person (); persona.setName ("qiuya"); Persona.Setage (19); PersonRepository.save (Persona); System.out.print (1/0); Person Personb = new Person (); Personb.SetName ("Mengtejiao"); Personb.Setage (25); PersonRepository.save (Personb); }}Test in er
... @Autowired Private PersonService PersonService; .../*** Transaktionstest*/@postmapping ("/person/zwei") public void personTWO () {personSservice.inserttwo (); }Führen Sie das Projekt erneut aus und führen Sie die Anforderungs -Post -Methode aus http: // localhost: 8081/Springboot/Person/Two aus
Die erste Daten wurde der Datenbank nicht hinzugefügt, was darauf hinweist, dass es Transaktionsmanagement gibt
Vollständige Personcontroller.java, personrepository.java und pom.xml
Personcontroller.java
Paket com.jxust.controller; import com.jxust.dao.personrepository; import com.jxust.entity.person; import com.jxust.service.personservice; java.util.list;/** * erstellt von peng * time: 2016/12/16 18:04 */ @rastControllerPublic Class PersonController {@autowired personRepository PersonRepository; @Autowired Private Personenservice PersonService; /** * Abfragen Sie die Liste des gesamten Personals * * @return */@getmapping (value = "/person") private Liste <Person> personList () {return personRepository.findall (); }/** * eine Person hinzufügen * * @param name * @param ay * @return */@postmapping (value = "/person") personadd (@RequestParam ("Name") String -Name, @RequestParam ("Age") Integer Age) {Person person = new Person (); Person.SetName (Name); Person.Setage (Alter); return personRepository.save (Person); }/** * eine Person abfragen * * @param id * @return */@getmapping (value = "/person/{id}") populs personfindone (@PathVariable ("id") Integer id) {return personRepository.findone (id); }/** * eine Person löschen * * @param id */@deletemapping (value = "/person/{id}") public void persondelete (@PathVariable ("id") Integer id) {PersonRepository.delete (id); }/** * Aktualisieren Sie eine Person * * @param id * @param name * @param ay * @return */@putmapping (value = "/person/{id}") personalupdate (@PathVariable ("id") Innegeber id, @RequestParam ("Name") String name, @Requestparam ("AGEGEGER") ZWEIGER AGERAGE {PERSAME "{@REQUESTPARAM (" AGEGER ") ZWEIGER AGES) {PERSON NEMAL (@Requestaram) (" AGEGEGE ") {persönlich) {@Requestaram (" AGEGER ") Integer Age Age ag. Person.setId (id); Person.SetName (Name); Person.Setage (Alter); return personRepository.save (Person); }/** * Abfragen nach Alter * @param AGE * @Return */@getmapping (value = "/person/älter/{Alter}") publiclist <Person> personListbyage (@patheVariable ("Alter") Integer Age) {return personRepository.findbyage (Age); }/*** Transaktionstest*/@postmapping ("/person/zwei") public void Persontwo () {personSservice.inserttwo (); }}PersonRepository.java
paket com.jxust.dao; import com.jxust.entity.person; import org.springframework.data.jpa.repository.jparepository; nach Alter * Methodenname behoben * @Param Age * @return */ Public List <Person> FindByage (ganzzahliger Alter);}
pom.xml
<? XSI: Schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion> 4.0.0 </modelversion> <gruppe> com.jxust </Groupid> </Groupid> </Groupid> </Groupid> </Groupid> </GroupID> </Groupid> </gruppen </Groupid> <artifactId> spirngbootDemo </artifactId> <version> 0.0.1-Snapshot </Version> <Packages> jar </packaging> <name> spirngbootDemo </name> <Bection> Demo-Projekt für Spring-Start </Beschreibung <artifactid> Spring-Boot-Starter-Parent </artifactid> <version> 1.4.2 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <Depepecy> <GroupId> org.springFramework.boot </GroupId> <artifactId> Spring-Boot-Starter-Test </artifactId> <Schops> test </scope> </abhängig> <De vorangetrieben> <gruppe id> org. <optional> true </optional> </abhängig> <abhängigkeit> <gruppe> org.springFramework </abhängig> </abhängig> </build> <plugins> <plugin> <GroupId> org.springframework
Zusammenfassen
Das obige ist eine detaillierte Erklärung der Intellij Idea Springboot -Datenbank -Addition, Löschung, Änderung und Suchbeispiele, die vom Editor eingeführt wurden. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!