Je touche généralement PHP et javascript principalement, mais j'ai eu l'occasion de toucher Spring Boot de Java, donc j'écrirai ce que j'ai appris à ce moment-là et ce que j'ai trouvé utile.
java version 1.8.0_92 Spring Boot v1.5.8 Maven
IDE En PHP, j'ai utilisé vim dans mon travail précédent et récemment phpstrom, mais l'environnement de développement Spring Boot de Java utilise eclipse ou STS (Spring Tool Suite). Il semble que STS soit également basé sur eclipse, et quand j'ai essayé de l'utiliser cette fois, j'ai eu la même impression que eclipse.
Peut-être que la plus grande caractéristique de Spring est cette annotation. De nombreuses personnes qui ont utilisé phpunit, etc. ont utilisé @Test ou @dataProvider, mais de telles annotations sont disponibles partout. Voici juste deux annotations que vous avez probablement le plus utilisées.
Injection de dépendances: c'est ce qu'on appelle l'injection de dépendances. Si vous déclarez @Autowired dans la classe, vous pouvez utiliser l'objet même si vous n'avez pas créé l'objet avec new.
@Autowired
private TestClass testClass;
Vous pouvez définir SQL et l'exécuter lorsque la méthode set est appelée. Aussi, à cette époque, différents styles d'écriture de printemps sont disponibles.
@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);
}
Si vous souhaitez utiliser une bibliothèque autre que des fonctions standard en PHP, je pense que composer est le courant principal maintenant, mais dans le cas du développement Java utilisant Maven, définissez la bibliothèque à utiliser en dépendance.
Vous pouvez trouver les bibliothèques disponibles dans maven à partir du référentiel Maven. https://mvnrepository.com/
Plus précisément, lorsque vous créez un projet, un fichier appelé pom.xml y est créé, décrivez donc le référentiel que vous souhaitez utiliser comme suit. Cependant, si vous utilisez l'EDI, vous n'avez pas à écrire le code vous-même, entrez simplement les paramètres sur l'écran de réglage et les réglages suivants seront décrits sans autorisation, ce qui est pratique.
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.5</version>
</dependency>
</dependencies>
Dans Spring Boot, les paramètres de l'application sont décrits dans un fichier appelé src / main / resources / application.properties. Par exemple:
# 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
En écrivant comme ça, vous pouvez facilement modifier divers paramètres tels que redis et base de données. Aussi, par exemple dans le code
public class Application {
@Value("${path.log-dir}")
private String logDir;
public static void main(String[] args) {
System.Out.Println(logDir);
}
}
Vous pouvez également utiliser les paramètres écrits dans des propriétés comme celle-ci.
En PHP, cela s'appelle Model, View, Controller, mais dans Spring, cela s'appelle Service, View, Controller. Il semble que la logique métier soit décrite dans Service, mais je pense que c'est presque la même chose que Model. J'ai créé une classe Thread sous Service et l'ai appelée depuis Service, mais cela semble être assez courant.
C'était un concept difficile à mettre en œuvre au début à cause d'un concept que PHP n'a pas. En Java, plusieurs threads peuvent être exécutés en même temps, il est donc nécessaire de bien réfléchir au code, par exemple en le rendant thread-safe afin de ne pas affecter les autres threads à ce moment-là. Il n'y a pas de problème s'il est implémenté avec un seul thread, mais s'il est implémenté avec Java, j'aimerais le rendre multi-thread et maximiser les performances.
J'ai trouvé cela gênant pour écrire du code Java. Par exemple, si vous souhaitez exécuter une commande sur la ligne de commande en php,
if ( !exec('command 2>&1',$array)) {
var_dump($array);
}
Si vous écrivez comme ça, vous avez terminé. Si c'est Java,
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();
Cela devient comme. (Il existe peut-être un moyen plus simple de l'écrire en Java, mais c'est ainsi que je l'ai recherché) Je pense que c'est parce que je ne suis pas habitué à Java, mais à mesure que la quantité de code augmente lors de l'écriture en Java partout, le temps de recherche pour étudier comment écrire un programme a considérablement augmenté.
De plus, Java vous oblige à écrire try {...} catch () {...} partout. Bien que l'IDE le complète, je l'ai trouvé assez gênant par rapport à PHP.
Contrairement à PHP, Java est assez strict dans la conversion de type. Récemment, même en PHP, l'écriture de types avec des déclarations telles que des fonctions a augmenté, mais c'était assez restreint pour moi en tant que personne qui s'est familiarisée avec PHP pour toujours écrire des types.
En particulier, il était assez pénible de ne pas pouvoir gérer les hachages et les tableaux comme le tableau de PHP de manière pratique, et j'ai dû prendre la peine de créer une classe pour la valeur de retour. Par exemple
public String getClient(){
return "name";
}
String client = getClient();
Si vous souhaitez renvoyer l'identifiant client en plus du nom de la fonction, PHP
public function getClient(){
return array("name", 1);
}
list ($name, $id) = getClient();
C'est facile à changer, mais si vous l'écrivez correctement en Java,
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();
Vous devez créer une classe de valeurs de retour comme celle-ci. Bien sûr, vous pouvez en faire Object [] ou le renvoyer en tant que String [] et le refondre en int, mais lors de l'écriture en Java, il est courant de faire le résultat correctement dans la classe. Ensuite, j'ai dû écrire beaucoup de code par rapport à php, ce qui était beaucoup de travail pour moi.
phpstorm est également utile car il suggère des contre-mesures pour les erreurs, mais Java n'a que le langage statique d'origine, il est donc assez gentil de traiter les erreurs. S'il y a une erreur, la plupart de l'erreur sera résolue simplement en cliquant sur l'erreur sur l'EDI → en sélectionnant la solution. Même si je ne l'ai pas développé sérieusement en Java, je tombe rarement sur des erreurs, et j'ai trouvé cette partie vraiment merveilleuse.
Il se peut que je ne sois nouveau sur Java, mais Java est beaucoup plus lent à se développer que PHP. Après tout, j'aime PHP parce qu'il est confortable. Cependant, contrairement à PHP, il n'est pas possible de l'implémenter grossièrement avec Java, donc même si la qualité de l'ingénieur est faible, il est certain que du code plus maintenable que PHP sera appliqué.
Aussi, pour une raison quelconque, le printemps a peu de documents japonais, et il était plus rapide de le chercher en anglais pour faire quoi que ce soit, donc si vous êtes habitué à PHP, qui a beaucoup de documents en japonais, un tel endroit peut être douloureux. ne pas.
Recommended Posts