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.
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.
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);
}
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>
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.
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.
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.
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.
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.
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