PHP-basierter Ingenieur berührte Javas Spring Boot

Vorwort

Normalerweise berühre ich hauptsächlich PHP und Javascript, aber ich hatte die Möglichkeit, Spring Boot von Java zu berühren, also werde ich schreiben, was ich damals gelernt habe und was ich nützlich fand.

Umgebung

java version 1.8.0_92 Spring Boot v1.5.8 Maven

IDE In PHP habe ich vim in meinem vorherigen Job und kürzlich in phpstrom verwendet, aber die Spring Boot-Entwicklungsumgebung von Java verwendet Eclipse oder STS (Spring Tool Suite). Es scheint, dass STS auch auf Eclipse basiert, und als ich diesmal versuchte, es zu verwenden, hatte ich den gleichen Eindruck wie Eclipse.

Anmerkung

Das vielleicht größte Merkmal des Frühlings ist diese Anmerkung. Viele Leute, die phpunit usw. verwendet haben, haben @Test oder @dataProvider verwendet, aber solche Anmerkungen sind überall verfügbar. Hier sind nur zwei Anmerkungen, die Sie wahrscheinlich am häufigsten verwendet haben.

Abhängigkeitsinjektion: Dies wird als Abhängigkeitsinjektion bezeichnet. Wenn Sie in der Klasse @Autowired deklarieren, können Sie das Objekt verwenden, obwohl Sie das Objekt nicht mit new erstellt haben.

@Autowired
private TestClass testClass;

Sie können SQL definieren und ausführen, wenn die set-Methode aufgerufen wird. Zu dieser Zeit sind auch verschiedene Schreibstile des Frühlings verfügbar.

@Repository
public interface TableDao {
    @Query("SELECT s FROM table s ORDER BY id DESC")
    List<Table> findAllRecord();

    @Query("FROM Table WHERE id = ?1)
    List<Table> findById(int id);
}

Nutzung der Bibliothek

Wenn Sie eine andere Bibliothek als die Standardfunktionen in PHP verwenden möchten, ist Composer meiner Meinung nach derzeit der Mainstream. Bei der Java-Entwicklung mit Maven sollten Sie die Bibliothek so einstellen, dass sie in Abhängigkeit verwendet wird.

Sie finden die in maven verfügbaren Bibliotheken im Maven Repository. https://mvnrepository.com/

Wenn Sie ein Projekt erstellen, wird eine Datei mit dem Namen pom.xml erstellt. Beschreiben Sie daher das Repository, das Sie dort verwenden möchten, wie folgt. Wenn Sie jedoch die IDE verwenden, müssen Sie den Code nicht selbst schreiben. Geben Sie einfach die Parameter auf dem Einstellungsbildschirm ein. Die folgenden Einstellungen werden ohne Erlaubnis beschrieben, was praktisch ist.

<dependencies>
	<dependency>
		<groupId>org.apache.commons</groupId>
		<artifactId>commons-csv</artifactId>
		<version>1.5</version>
	</dependency>
</dependencies>

Anwendungseinstellungen

Beim Spring Boot werden die Anwendungseinstellungen in einer Datei mit dem Namen src / main / resources / application.properties beschrieben. Zum Beispiel:

# setting of database
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=1234

# Redis
# Specify the DNS URI of your Redis cache.
spring.redis.host=localhost

#### application properties ####
# application log dir
path.log-dir=/Users/user/tmp/logs

Wenn Sie so schreiben, können Sie leicht verschiedene Einstellungen wie Redis und Datenbank ändern. Auch zum Beispiel im Code

public class Application {
    @Value("${path.log-dir}")
    private String logDir;

    public static void main(String[] args) {
        System.Out.Println(logDir);
    }
}

Sie können auch die Einstellungen verwenden, die in solchen Eigenschaften geschrieben sind.

MVC-Framework

In PHP heißt es Model, View, Controller, im Frühjahr jedoch Service, View, Controller. Es scheint, dass die Geschäftslogik im Service beschrieben wird, aber ich denke, dass sie fast mit dem Modell identisch ist. Ich habe eine Thread-Klasse unter Service erstellt und sie von Service aufgerufen, aber es scheint ziemlich häufig zu sein.

Multi Thread

Die Implementierung war zunächst schwierig, da PHP kein Konzept hat. In Java können mehrere Threads gleichzeitig ausgeführt werden. Daher muss der Code sorgfältig überlegt werden, z. B. um ihn threadsicher zu machen, damit andere Threads zu diesem Zeitpunkt nicht beeinträchtigt werden. Es gibt kein Problem, wenn es mit einem einzelnen Thread implementiert wird, aber wenn es mit Java implementiert ist, möchte ich es zu einem Multithread machen und die Leistung maximieren.

Es muss viel Code geschrieben werden

Ich fand es unpraktisch, Java-Code zu schreiben. Wenn Sie beispielsweise einen Befehl in der Befehlszeile in PHP ausführen möchten,

if ( !exec('command 2>&1',$array)) {
    var_dump($array);
}

Wenn Sie so schreiben, sind Sie fertig. Wenn es Java ist,

String executeCmd = new String[] { "bash", "-c", command };
Process p = new ProcessBuilder(executeCmd).start();
p.waitFor();
BufferedReader buffRead = new BufferedReader(new InputStreamReader(p.getErrorStream()));

while ((strLine = buffRead.readLine()) != null) {
    System.Out.Println(strLine);
}
buffRead.close();

Es wird wie. (Es gibt vielleicht eine einfachere Möglichkeit, es in Java zu schreiben, aber so habe ich es nachgeschlagen) Ich denke, das liegt daran, dass ich nicht an Java gewöhnt bin, aber da die Menge an Code beim Schreiben in Java überall zunimmt, hat sich die Recherchezeit für die Untersuchung des Schreibens eines Programms erheblich erhöht.

public String getClient(){
   return "name";
}

String client = getClient();

Die Form ist streng und würzig. In PHP gibt es keinen geeigneten Typ wie Array. Im Gegensatz zu PHP ist Java bei der Typkonvertierung recht streng. Selbst in PHP hat das Schreiben von Typen mit Deklarationen wie Funktionen in letzter Zeit zugenommen, aber für mich als Person, die mit PHP vertraut wurde, war es ziemlich eng, immer Typen zu schreiben. Insbesondere war es ziemlich schmerzhaft, dass ich Hashes und Arrays wie das PHP-Array nicht bequem verarbeiten konnte, und ich musste mir die Mühe machen, eine Klasse für den Rückgabewert zu erstellen. Wenn Sie beispielsweise die ID des Clients zusätzlich zum Namen in der Funktion PHP zurückgeben möchten,

public function getClient(){
    return array("name", 1);
}

list ($name, $id) = getClient();

Es ist leicht zu ändern, aber wenn Sie es richtig in Java schreiben,

class Client {
   private int id;
   private String name;

   public Client(int id, String name) {
       this.id = id;
       this.name = name;
   }
}

public Client getClient() {
   return new Client("name", 1);
}

Client client = getClient();

Sie müssen eine Klasse von Rückgabewerten wie diesen erstellen. Natürlich können Sie es zu Object [] machen oder als String [] zurückgeben und in int umwandeln, aber wenn Sie in Java schreiben, ist es üblich, das Ergebnis in der Klasse richtig zu machen. Dann musste ich im Vergleich zu PHP viel Code schreiben, was für mich eine Menge Arbeit war.

Dies ist praktisch, da Sie nur auswählen müssen, wie mit dem Fehler umgegangen werden soll.

phpstorm ist auch nützlich, weil es Gegenmaßnahmen für Fehler vorschlägt, aber Java hat nur die ursprüngliche statische Sprache, so dass es sehr freundlich ist, mit Fehlern umzugehen. Wenn ein Fehler vorliegt, wird der größte Teil des Fehlers behoben, indem Sie einfach auf den Fehler in der IDE klicken → die Lösung auswählen. Auch wenn ich es in Java nicht ernsthaft entwickelt habe, stolpere ich selten über Fehler und fand diesen Teil wirklich wunderbar.

Fazit

Es mag sein, dass ich neu in Java bin, aber Java ist viel langsamer zu entwickeln als PHP. Immerhin mag ich PHP, weil es bequem ist. Da es jedoch nicht möglich ist, es ungefähr wie PHP mit Java zu implementieren, ist es sicher, dass Code angewendet werden kann, der wartbarer als PHP ist, selbst wenn die Qualität des Ingenieurs niedrig ist.

Aus irgendeinem Grund hat Spring auch nur wenige japanische Dokumente, und es war schneller, sie auf Englisch nachzuschlagen, um etwas zu tun. Wenn Sie also an PHP gewöhnt sind, das viele Dokumente auf Japanisch enthält, kann ein solcher Ort schmerzhaft sein. nicht.

Recommended Posts

PHP-basierter Ingenieur berührte Javas Spring Boot
Ein Memo, das Spring Boot berührte
Fordern Sie Spring Boot heraus
Spring Boot Form
Spring Boot Denken Sie daran
gae + frühlingsstiefel
SPRING BOOT Lernaufzeichnung 01
Frühlingsstiefel + Heroku Postgres
Schreiben von Frühlingsstiefel-Memos (1)
SPRING BOOT Lernprotokoll 02
Spring Boot2 Spickzettel
Spring Boot-Ausnahmebehandlung
Spring Boot Servlet-Zuordnung
Spring Boot Entwicklung-Entwicklungsumgebung-
Spring Boot-Lernverfahren
Spring Boot lernen [Anfang]
Schreiben von Spring Boot-Memos (2)
Spring Boot 2.2 Dokumentzusammenfassung
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Spring Boot 2.3 Verfügbarkeit von Anwendungen
Spring Boot Tutorials Themen
Mit Spring Boot herunterladen
[Spring Boot] Umgebungskonstruktion (macOS)
Legen Sie den Kontextparameter in Spring Boot fest
Versuchen Sie Spring Boot von 0 bis 100.
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Spring Boot unter Microsoft Azure
Aufgabenplan für das Spring Boot Tutorial
Spring 5 & Spring Boot 2 Praktisches Vorbereitungsverfahren
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
[Spring Boot] Erstellung von Webanwendungen
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
[Java] Thymeleaf Basic (Spring Boot)
Einführung in Spring Boot ~ ~ DI ~
Einführung in Spring Boot ② ~ AOP ~
CICS-Java-Anwendung ausführen- (4) Spring Boot-App
Spring Boot beginnend mit Docker
Spring Boot + Springfox Springfox-Boot-Starter 3.0.0 Verwendung
Tipps zur Spring Boot DB
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
[Spring Boot] Einfaches Rezept für den Paging-Prozess
Verwenden Sie Spring JDBC mit Spring Boot
Aufbau der Docker x Spring Boot-Umgebung
Wichtige Änderungen in Spring Boot 1.5
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
NoHttpResponseException in Spring Boot + WireMock
[Spring Boot] Senden Sie eine E-Mail
Einstellungen für die Spring Boot-Leistung
Einführung in Spring Boot Teil 1
Spring Boot Externe Einstellungspriorität
Versuchen Sie es mit Spring Boot Security
[Java] [Spring] Spring Boot 1.4-> 1.2 Downgrade Hinweis
Versuchen Sie Spring Boot auf dem Mac
Erstellen Sie mit Spring Boot einen Mikrodienst
Spring Boot DB-Verbindungspool