Letztes Jahr hatte ich ein wenig Verständnis dafür, wie bequem und schneller Springboot in verschiedenen Kanälen entwickelt wurde. Aber ich habe damals nicht hart gelernt. Immerhin hatte ich das Gefühl, dass ich Streben und SpringMVC nicht sehr gut beherrschte. Nachdem ich jedoch viele Einführungen über Springboot gelesen hatte, war es nicht so schwierig, wie ich dachte, also begann ich mich auf das Erlernen des Springboots vorzubereiten. In meiner Freizeit begann ich, mein erstes Springboot -Projekt zu schreiben, nachdem ich den tatsächlichen Kampf des Springboot und einige Master -Blogs über Springboot gelesen hatte. Nachdem dieser Blog-Beitrag in der Lage war, CRUD-Funktionen im Springboot mit einer einfachen Entwicklung von RESTFAY-Schnittstellen implementieren zu können.
Einführung in Springboot
Spring Boot ist ein neues Framework des Pivotal -Teams. Es ist so konzipiert, dass es den anfänglichen Bau- und Entwicklungsprozess neuer Springanwendungen vereinfacht. Das Framework verwendet eine spezifische Möglichkeit, es zu konfigurieren, damit Entwickler keine Kesselplattenkonfigurationen mehr definieren müssen.
Einfach ausgedrückt, können Sie schnell ein Projekt mit nur wenigen Gläser und einigen einfachen Konfigurationen entwickeln.
Wenn ich einfach eine externe Schnittstelle entwickeln möchte, benötige ich nur den folgenden Code.
Ein Hauptprogramm startet Springboot
@SpringbootApplicationPublic Class Application {public static void main (String [] args) {SpringApplication.run (application.class, args); }}Steuerungsschicht
@RestControllerPublic Class HelloWorldController {@RequestMapPing ("/hello") public String index () {return "Hallo Welt"; }}Nach erfolgreichem Start des Hauptprogramms schreiben Sie die Steuerungsschicht und geben Sie dann http: // localhost: 8080 // Hallo im Browser ein, um die Informationen anzuzeigen.
Ich bin der Meinung, dass es sehr einfach ist, Springboot zu entwickeln, um Programme zu entwickeln!
In den praktischen Worten von Springboot:
Hier gibt es keine Konfiguration, keine web.xml, keine Build -Anweisungen und sogar kein Anwendungsserver, aber das ist die gesamte Anwendung. Springboot führt alle Logistik durch, die für die Ausführung der Anwendung erforderlich sind, und Sie müssen nur den Code der Anwendung abrufen.
Entwickeln Sie einen erholsamen Service basierend auf Springboot
Vor der Entwicklung eines Programms sollten Sie einige Vorbereitungen treffen
Datenbank erstellen "Springboot"; Verwenden Sie "Springboot"; Droptabelle, wenn existiert "t_user"; erstellen Tabelle "T_USER" ("ID" int (11) nicht null auto_increment comment 'id "id", "name" varchar (10) Default Null -Kommentar' Name "," Age "int (2). Auto_increment = 12 Standard charSet = utf8;Das Kernglas des Springboots
Spring-Boot-Starter: Kernmodul, einschließlich automatischer Konfigurationsunterstützung, Protokollierung und YAML;
<Ters </Groupid> org.springFramework.boot </GroupId> <artifactId> Spring-Boot-Starter-Parent </artifactId> <version> 1.9.Release </Version> <relativpath/> </parent> <properties> <project.build.sourceCoding> utf-8 </Propo. <Java.version> 1.7 </java.version> <mybatis-pring-boot> 1.2.0 </mybatis-pring-boot> <mysql-connector> 5.1.39 </mysql-connector <artifactId> Spring-Boot-Starter-Web </artifactId> </abhängig> <abhängigkeit> <GroupId> org.springFramework.boot </Groupid> <artifactId> Spring-Boot-Starter-thymeleaf </artifactId> </abhängig> <Epapts> <gruppe <GroupId> oderg.spingframework.Boot </gruppe </gruppe </gruppe </gruppen> org.spingframework <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Spring Boot Mybatis Dependency --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis-spring-boot}</version> </dependency> <!-- MySQL connection driver dependency--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector}</version> </dependency> </dependency> <build> <Plugins> <!-Verwenden Sie das Springboot-Plug-In, um die Spring-Boot-Devtools-Modulanwendung zu verwenden. Wenn sich die Datei im Klassenpfad ändert, startet sie automatisch neu! -> <plugin> <GroupId> org.springframework.boot </Groupid> <artifactId> Spring-Boot-Maven-Plugin </artifactid> <configuration> <darg> true </fork> </configuration> </plugin> </plugins> </build> com.pancm.web - Controller -Schicht
com.pancm.dao - Datenbetriebsebene DAO
com.pancm.bean - Entitätsklasse
com.pancm.bean.service - Geschäftslogikschicht
Anwendung - Anwendungsstartklasse
application.Properties - Anwendungskonfigurationsdatei, die Konfiguration wird automatisch vom Anwendungsstart gelesen
Im Allgemeinen benötigen wir einige benutzerdefinierte Konfigurationen, z. B. die Konfiguration der Verbindungskonfiguration von JDBC, wobei wir über Application.Properties zum Konfigurieren können. Die tatsächliche Konfiguration der Datenquelle unterliegt jedem aller.
## Datenquellenkonfiguration Spring.DataSource.url = JDBC: MySQL: // localhost: 3306/Springboot? UseUnicode = True & CharakterCoding = Utf8spring.DataSource.username = Rootspring.DataSource.password = 123456spring.datasource.Datasource. MyBatis -Konfiguration# Konfigurieren Sie als com.pancm.bean Punkt auf den Entitätspaket. mybatis.typealiaSpackage = com.pancm.bean# Konfigurieren Sie das Mapper -Paket unter dem ClassPath -Pfad * bedeutet, dass alle XML -Dateien gescannt werden. mybatis.mapperLocations = classPath/: mapper/*. xml
Es ist fast Zeit, zum Schlüsselcode zu kommen.
Wir beginnen mit dem Schreiben der Pojo -Klasse, die der T_USER -Tabelle in der Datenbank entspricht.
Der Code ist wie folgt
public class user { / ** nummer* / private int id; / ** Name*/ privater Zeichenfolge Name; / ** Alter*/ privates Alter; public user () {} public class user { / ** nummer* / private int id; / ** Name*/ privater Zeichenfolge Name; / ** Alter*/ privates Alter; public user () {} // Getter und Setter weggelassen}In der vorherigen DAO -Ebene könnten sowohl Hibernate als auch MyBatis Anmerkungen oder Mapper -Konfigurationsdateien verwenden. Hier verwenden wir Spring's JPA, um Crud zu vervollständigen.
veranschaulichen:
Es gibt im Allgemeinen zwei Möglichkeiten zur Implementierung der CRUD- und Datenbankimplementierung:
Die erste ist die Mapper -Konfiguration von XML.
Der zweite Typ ist die Verwendung von Anmerkungen, @Insert, @select, @Update, @Delete und anderen Anmerkungen. Dieser Artikel verwendet den zweiten Typ
import org.apache.ibatis.annotations.delete; import org.apache.ibatis.annotations.insert; org.apache.ibatis.Annotations.mapper; org.apache.ibatis.annotations.Update;import org.springframework.data.repository.query.Param;import com.pancm.bean.User;@Mapperpublic interface UserDao { /** * User data added*/ @Insert("insert into t_user(id,name,age) values (#{id},#{name},#{ay}) ") void adduser (Benutzer Benutzer); / *** Benutzerdatenänderung*/ @update ("T_USER set name =#{name}, ay = {ay} wob / *** Benutzerdaten Löschung*/ @delete ("Aus T_USER löschen wob /** * Query user information based on user name* */ @Select("SELECT id,name,age FROM t_user") // Return Map result set @Results({ @Result(property = "id", column = "id"), @Result(property = "name", column = "name"), @Result(property = "age", column = "age"), }) User findByName(@Param("name") String Benutzername); / *** Benutzerinformationen basierend auf Benutzer -ID**/ @select ("ID, Name, Alter von T_USER") Benutzer findById (@param ("id") int userId); / *** Benutzerinformationen basierend auf dem Benutzeralter abfragenPersönliches Verständnis der Anmerkungen, die von dieser Schnittstelle verwendet werden:
Mapper: Diese Annotation der Schnittstelle hinzugefügt, um anzuzeigen, dass diese Schnittstelle eine CRUD ist, die basierend auf Annotation implementiert ist.
Ergebnisse: Das zurückgegebene Kartenergebnissatz, Eigenschaft repräsentiert die Felder der Benutzerklasse und die Spalte die Felder der entsprechenden Datenbank.
Param: Feld für die SQL -Bedingung.
Fügen Sie die entsprechenden Datenbanken ein, auswählen, aktualisieren, löschen, rekrutieren, ändern und löschen.
Dies ist im Grunde dasselbe wie Hibernate und MyBatis.
Der Code ist wie folgt:
Schnittstelle
com.pancm.bean.user;/**** title: userService* Beschreibung: Benutzeroberfläche* Version: 1.0.0* @author pancm* @date 9. Januar 2018*/public interface userservice {/*** Benutzer hinzufügen* @param user* @return*/boolean adduser (user user); / ** * Benutzer ändern * @param user * @return */ boolean updateUser (Benutzerbenutzer); / ** * Benutzer löschen * @param id * @return */ boolean deleteUser (int id); / *** Benutzerinformationen basierend auf dem Benutzernamen* @param username*/ user findUserByName (String -Benutzername); / *** Benutzerinformationen basierend auf Benutzer -ID* @param userID*/ user findUserById (int userID); / *** Benutzerinformationen basierend auf Benutzer -ID* @param userage*/ user findUserByage (int userage);};}Implementierungsklasse
import org.springframework.beans.factory.annotation * @Author Pancm* @date 9. Januar 2018*/ @ServicePublic Class UserServiceImPlements UserService {@Autowired private userDao userDao; @Override public boolean adduser (Benutzerbenutzer) {boolean flag = false; try {userDao.adduser (Benutzer); Flag = wahr; } catch (Ausnahme e) {e.printstacktrace (); } Rückkehrflag; } @Override public boolean updateUser (Benutzerbenutzer) {boolean flag = false; try {userDao.Updateuser (Benutzer); Flag = wahr; } catch (Ausnahme e) {e.printstacktrace (); } Rückkehrflag; } @Override public boolean deleteUser (int id) {boolean flag = false; try {userDao.deletUser (id); Flag = wahr; } catch (Ausnahme e) {e.printstacktrace (); } Rückkehrflag; } @Override public User findUserByName (String -Benutzername) {return userDao.findByName (Benutzername); } @Override öffentlicher Benutzer findUserById (int userId) {return userDao.findbyId (userId); } @Override öffentlicher Benutzer findUserByage (int userage) {userDao.findbyage (userage); }}Die Kontrollschicht ist SpringMVC sehr ähnlich, ist aber viel einfacher.
Mein persönliches Verständnis der Annotation zur Steuerungsschicht ist wie folgt:
RESTCONTROLLER: Die Methoden in der Standardklasse werden im JSON -Format zurückgegeben.
RequestMapping: Schnittstellenpfadkonfiguration.
Methode: Anforderungsformat.
RequestParam: Anforderungsparameter.
Die spezifische Implementierung ist wie folgt:
import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bind.annotation org.springframework.web.bind.annotation.restcontroller; import com.pancm.bean.user; import com.pancm.Service "/api/user") public class userrestController {@autowired Private UserService UserService; @RequestMapping (value = "/adduser", method = requestMethod.post) public boolean adduser (Benutzerbenutzer) {system.out.println ("add ..."); return userService.adduser (Benutzer); } @RequestMapping (value = "/updateUser", method = requestMethod.put) public boolean updateUser (Benutzerbenutzer) {System.out.println ("Aktualisieren Sie ..."); return userService.Updateuser (Benutzer); } @RequestMapping (value = "/deleteUser", method = requestMethod.delete) public boolean delete (@RequestParam (value = "userername", fordert = true) int userId) {System.out.println ("starten Sie löschen ..."); return userService.deleteUser (userID); } @RequestMapping (value = "/userername", method = requestMethod.get) öffentlicher Benutzer findByUnername (@RequestParam (value = "userername", fordert = trueName) username {System.out.println ("Start -Abfrage ..."); return userService.finduserByName (Benutzername); } @RequestMapping (value = "/userId", method = requestMethod.get) öffentlicher Benutzer findByUserId (@RequestParam (value = "userId", fordert = true) int userId) {System.out.println ("Start Query ..."); return userService.finduserbyId (userID); } @RequestMapping (value = "/userage", method = requestMethod.get) öffentlicher Benutzer findByUSerage (@RequestParam (value = "userage", fordert = true) int userage) {System.out.println ("start query ..."); return userService.finduserbyId (userage); }}Springapplication ist eine Klasse, die zum Starten von Federanwendungen von der Hauptmethode verwendet wird.
Standardmäßig führt es die folgenden Schritte aus:
1. Erstellen Sie eine geeignete AnwendungContext -Instanz (je nach Klassenpfad).
2. Registrieren Sie eine BefehlslinePropertySource, um die Befehlszeilenparameter als Federeigenschaften zu verwenden.
3.. Aktualisieren Sie den Anwendungskontext und laden Sie alle Singleton -Bohnen.
4. Aktivieren Sie alle Befehlslinerunner -Bohnen.
Starten Sie diese Klasse direkt mit Main, und Springboot konfiguriert sie automatisch.
PS: Auch jetzt denke ich immer noch, dass das wirklich erstaunlich ist.
Einige Anmerkungen für diese Klasse werden erklärt. :
SpringbootApplication: Schalten Sie die Komponenten -Scan und die automatische Konfiguration ein.
Mapperscan: Mapper -Schnittstellenklassen -Scan -Paket -Paketkonfiguration
Der Code ist wie folgt:
import org.mybatis.spring.annotation.mapperscan; import org.springframework.boot.springapplication; 2018*/@SpringBootApplication@mapperscan ("com.pancm.dao") öffentliche Klassenanwendung {public static void main (String [] args) {// den eingebetteten Tomcat starten und die Frühlingsumgebung und ihre Spring -Komponenten Springapplication.Run (Anwendung.Class, Args); System.out.println ("Programm läuft ..."); }}Nachdem der Code geschrieben wurde, führen wir den Codetest durch.
Verwenden Sie nach Beginn der Anwendung das Postman -Tool, um die Schnittstelle zu testen.
Die Testergebnisse sind wie folgt:
Hier wird nur ein Get and Post -Test verwendet. Die tatsächlichen Methoden wurden getestet, aber ich bin der Meinung, dass die Karte nicht erforderlich ist.
Ich habe das Projekt auf GitHub gestellt:
https://github.com/xuwujing/springboot
Zusammenfassen
Die oben genannte Einführung des Editors zur Entwicklung eines auf Springboot basierenden Rastful -Dienstes zur Implementierung der Funktion des Hinzufügens, Löschens, Änderns und Überprüfens. 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!