[JAVA] J'ai essayé de réduire la capacité de Spring Boot
      
      
        
        
        
        
Auto-introduction
  
- opengl-8080
- Rédaction de notes techniques principalement en Qiita
--Travailler au SIer au Kansai
Qu'est-ce que Spring Boot?
--Mécanisme / cadre facilitant la création d'applications basées sur Spring
- Les résultats de construction sont combinés dans un seul fichier jar
Avantages d'un seul pot
- Le serveur AP est inclus, il n'est donc pas nécessaire de préparer un serveur AP pour chaque environnement.
- Le plaisir de commencer par java -jar

Inconvénients d'un seul pot
- Puisque toutes les bibliothèques dépendantes, y compris le serveur AP, sont incluses, la taille du fichier devient importante.

J'ai essayé de réduire la taille du pot
résultat

résultat

Comparaison de taille

Comment avez-vous fait?
Comment faites-vous Hello World en Java?
1. 1. Ecrire le code
Hello.java
public class Hello {
    public static void main(String... args) {
        System.out.println("Hello World");
    }
}
2. Compiler avec javac
$ javac Hello.java
3. 3. Hello.class est généré

4. Exécuter sur java
$ java Hello
Hello World
Avez-vous compris?
   
 
  La capacité du code source avant compilation est plus petite!  div>
L'API qui peut frapper javac est standard!

https://docs.oracle.com/javase/jp/8/docs/api/javax/tools/JavaCompiler.html

Comment fonctionne le pot amélioré
|-LightweightJarExecutor.class  :
|→ Code qui extrait le source de son propre jar, le compile et l'exécute
|-...
`-src/        :Spring Boot et un ensemble de sources pour les bibliothèques dépendantes
  |-ch/       : logback
  |-com/      :jackson ou com.comme le soleil
  |-javax/    :API standard javaee
  |-META-INF/
  |-org/      : Spring, hibernate, JBoss, Tomcat, etc... 
  `-sample/   :Spring MVC Hello World
Comportement au démarrage
- Extrayez le code source de votre propre fichier jar et copiez-le dans un répertoire temporaire
- Compilez la sortie source dans le répertoire temporaire en utilisant JavaCompiler
- Chargez la classe principale Spring Boot (JarLauncher) depuis la destination de sortie du résultat de la compilation en utilisant ʻURLClassLoader`.
- Exécutez la méthode main ()deJarLauncher
Compilez juste à temps!  (not) </ span>
S'il est laissé tel quel, il sera un gaspillage et ne pourra pas être réduit en poids.

Inutile 1: Commentaire

Déchets 2: Annotation

Déchets 3: privé

Déchets 4: blanc + saut de ligne

Code sophistiqué et allégé

Résultat Réussi à réduire la capacité de 5 Mo! : grin :: thumbsup:

Compensation 1: démarrage lent: innocent :: thumbsdown:

Compensation 2: impossible de déboguer: joy :: thumbsdown:

Veuillez ne pas imiter un bon enfant