当前位置:网站首页>Conception de systèmes de micro - services - construction de sous - services

Conception de systèmes de micro - services - construction de sous - services

2022-06-24 18:36:00 Zhuang XiaoYan

Résumé

Analyse des besoins et conception du modèle et conception de l'architecture du système,Nous avons une meilleure compréhension de la structure globale du projet,Le reste du travail est basé sur la conception,Retirer le cadre du projet,Remplis - le de chair et de sang..Construire un module de sous - service dans le système.

Un.、Construire le squelette de l'ensemble du projet

Le nom du projet convenu est parking-project ,Établissement Maven Projets,packaging Comment Pour pom,Pour gérer tous les modules.In parking-project Dans le cadre du projet, les modules fonctionnels sont établis successivement. maven module Sous - projets.Adoption IDEOutils.Par Maven Project Formulaire créer un parent,Pour gérer les fonctions du sous - module.

Je vois.,Le Sous - module automatise parent project Set to parking-project Projet parent.En raison de l'adoption Spring Boot Comment construire un sous - projet,Sélectionner ici packaging De la manière suivante: jar .Il suffit de créer des sous - modules en continu,Le résultat final est le suivant::

Brève introduction aux fonctions des modules suivants :

  1. parking-base-serv,pom Projets, Il contient deux sous - modules :parking-admin,parking-gateway.
  2. parking-admin, Surveiller le fonctionnement du sous - projet .
  3. parking-gateway, Sous - service passerelle ,Coopération JWT Session de mise en œuvre、 Fonctions telles que le droit d'inspection .
  4. parking-carwash, Service de lavage de voiture ,Connexion park-carwash Base de données.
  5. parking-card, Sous - service intégral ,Connexion park-card Base de données.
  6. parking-charging, Sous - service de facturation ,Connexion parking-charging Dépôt
  7. parking-finance, Sous - services financiers ,Connexion parking-finance Dépôt.
  8. parking-member, Sous - service des membres ,Connexion park-member Dépôt.
  9. parking-resource, Sous - service ressources ,Connexion park-resource Dépôt.
  10. parking-message, Sous - service de messagerie ,Connexion park-message Dépôt,Avec rocketmq Stocker les données du message
  11. parking-common, Stocker des classes d'outils communes ,Paquet physique, etc..

2.、 Créer un sous - service des membres

2.1 Introduction spring-boot-starter-parent Dépendance

Chaque sous - module est un Spring Boot Projets, Si elle est introduite dans un sous - module , Cela peut causer beaucoup de travail en double , Et la version ne doit pas être tenue à jour uniformément , Il est facile d'avoir plusieurs versions du chaos ,Alors... Spring Boot La version de exige une maintenance globale unifiée . Chaque sous - projet doit être construit en jar Exécution du fichier, La configuration de l'élément parent est déjà dépendante dans l'élément enfant ,Par sous - projet pom.xml Les fichiers ont tous ces dépendances :

    <parent>
        <groupId>com.mall.parking.root</groupId>
        <artifactId>parking-project</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

Si, comme d'habitude ,Réutiliser parent Comment introduire spring-boot-starter-parent Dépendance, Apparemment contre un seul pom Il n'y a qu'un seul fichier parent Critères d'étiquetage, La compilation échouera .

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

Pour résoudre ce problème,Adopté ici parking-project Dans le projet parent avec depencyMangement Comment introduire spring-boot-starter-parent,Dépendances des sous - projets parent La configuration parent est suffisante.

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

Il y a des petits partenaires qui peuvent proposer directement dans le projet root pom Adoption parent Comment introduire, Le Sous - module passe directement par maven La dépendance peut, Cette méthode fonctionne indépendamment Spring Boot Pas de problème avec le projet . Par la suite, il a été introduit de la même manière Spring Cloud Ou Spring Cloud Alibaba ,Un parent L'étiquetage ne répond manifestement pas à ce besoin ,Avec dependencyManagement Pour éviter ce problème .

2.2 Introduction MBG Plug - in

MBG Les plug - ins peuvent être générés automatiquement mapper Interface、mapper xml Configuration、 Classe d'entité correspondante , Le rôle principal est de développer rapidement , Évitez l'écriture inutile de code .

In pom Dépendances de configuration moyennes MBG Plug - in pour:

<build>
    <finalName>parking-member-service</finalName>
    <plugins>
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.4.0</version>
            <configuration>
                <!-- mybatis Profil utilisé pour générer le Code -->
                <configurationFile>src/test/resources/generatorConfig.xml</configurationFile>
                <verbose>true</verbose>
                <overwrite>true</overwrite>
            </configuration>
        </plugin>
    </plugins>
</build>

In src/test/resource Écrire dans le Répertoire generatorConfig.xml Documentation,Configuration MBG Plug - in Éléments de configuration de base requis .

<generatorConfiguration>
<!-- Local mysql Position de conduite -->
  <classPathEntry location="/Users/apple/.m2/repository/mysql/mysql-connector-java/5.1.42/mysql-connector-java-5.1.42.jar" />

  <context id="mysqlTables" targetRuntime="MyBatis3">
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/park-member?useUnicode=true" userId="root"
                        password="root">
                        <property name="useInformationSchema" value="true"/>
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

<!-- Générer model  Emplacement du fichier de classe d'entité  -->
    <javaModelGenerator targetPackage="com.mall.parking.member.entity" targetProject="src/test/java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>
<!-- Générer mapper.xml Emplacement du profil -->
    <sqlMapGenerator targetPackage="mybatis.mapper"  targetProject="src/test/resources">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
<!-- Générer mapper  Emplacement du fichier d'interface  -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.mall.parking.member.mapper"  targetProject="src/test/java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

<!--  Nom du tableau correspondant à la classe d'entité à générer , Plusieurs classes d'entités copient plusieurs copies de cette configuration  -->
     <table tableName="member" domainObjectName="Member">
        <generatedKey column="tid" sqlStatement="SELECT REPLACE(UUID(), '-', '')"/>
    </table>
    <table tableName="vehicle" domainObjectName="Vehicle">
        <generatedKey column="tid" sqlStatement="SELECT REPLACE(UUID(), '-', '')"/>
    </table>
    <table tableName="month_card" domainObjectName="MonthCard">
        <generatedKey column="tid" sqlStatement="SELECT REPLACE(UUID(), '-', '')"/>
    </table>
  </context>
</generatorConfiguration>

Une fois la configuration terminée,Nom du projet” parking-member “ Clic droit supérieur,Sélectionnez dans le menu contextuel" Run As " —>" Maven build… ",In Goals Entrez la commande suivante dans la colonne :

mybatis-generator:generate

Une fois la commande exécutée avec succès, Trouver le fichier correspondant dans le répertoire correspondant ,Et puis copy À src/java Sous le répertoire correspondant,Encore. test Suppression des fichiers générés dans le répertoire .

  • 1.4 Avant la version,MBG Le plug - in a généré xml Documentation,Est le mode d'ajout,Au lieu de couvrir, Facile à former des étiquettes dupliquées .
  • MBG Ne génère pas controller/service Code lié au calque ,Doit être fait manuellement.

2.3 Introduction Lombok,Code simplifié

Parce que la phase de compilation va utiliser lombok,Il faut donc IDE Installation moyenne lombok Plug - in,Pour compiler correctement.

2.4 Notes de journal

Si tu ne veux pas écrire à chaque fois,Les notes peuvent être utilisé[email protected] imprimer le journal.

private  final Logger logger = LoggerFactory.getLogger(Nom actuel de la classe.class);

2.5 IntroductionMyBatisDépendance

Introduction plus efficace MyBatis,Ici starter Comment introduire, Toujours à la racine pom.xml Maintenir la version du composant dans le fichier .

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

In application.properties Configuration de la connexion à la base de données dans le fichier de configuration ,Spring Boot 2.x La version par défaut est HikariCP En tant que JDBC Pool de connexion.

mybatis.type-aliases-package=com.mall.parking.member.entity

#Remplacer si nécessaire Druid Pool de connexion, Les éléments de configuration suivants doivent être ajoutés :
#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

#use new driver replace deprecated driver:com.mysql.jdbc.Driver.
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/park_member?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = root

Faire mapper Les fichiers d'interface peuvent être scannés par le système , Passage dans la classe principale @mapperscanNotes,Ou directementmapper Fichier d'interface plus @mapperNotes.

2.6 Vérifier si le cadre a réussi

@RestController
@RequestMapping("member")
@Slf4j
public class MemberController {

    @Autowired
    MemberService memberService;

    @RequestMapping("/list")
    public List<Member> list() {
        List<Member> members = memberService.list();
        log.debug("query member list = " + members);
        return members;
    }

}

MemberServiceImpl Catégorie de mise en œuvre

@Service
public class MemberServiceImpl implements MemberService {

    @Autowired
    MemberMapper memberMapper;

    @Override
    public List<Member> list() {
        MemberExample example = new MemberExample();
        List<Member> members = memberMapper.selectByExample(example);
        return members;
    }

}

Lancement du projet, Afficher le journal de succès après le succès :

2019-12-30 16:45:13.496  INFO 9784 --- [           main] c.mall.parking.member.MemberApplication  : Started MemberApplication in 6.52 seconds (JVM running for 7.753)

Ouvre. Postman Plug - in, Vérifier si la méthode est correcte ,Les opérations sont les suivantes:

2.7 Configuration multi - environnement

La recherche et le développement quotidiens de produits impliquent nécessairement un déploiement multiple ,Comme l'environnement de développement、Environnement d'essai、Environnement de production, etc., Cela exige que le déploiement du code réponde aux exigences de plusieurs environnements . Par modification manuelle ,Non seulement il est sujet aux erreurs, Et gaspiller les coûts de main - d'oeuvre , La construction automatisée doit être combinée pour améliorer la précision .Spring Boot Fournit une base de données profile Configuration multi - environnement pour, Plusieurs profils peuvent être ajoutés à chaque projet de microservice ,Par exemple:

  1. application.properties/yml Configuration commune de base
  2. application-dev.properties/yml Configuration de l'environnement de développement
  3. application-test.properties/yml Configuration de l'environnement d'essai
  4. application-pro.properties/yml Configuration de l'environnement de production

Dans le profil public application.properties Moyenne,Via la configuration spring.profiles.active = dev Pour décider quelle configuration activer , Ou au démarrage du paquet Build , Ajouter des commandes pour activer différentes configurations d'environnement : java -jar parking-member.jar --spring.profiles.active=devJusqu'ici.,Le premier est simple Spring Boot La construction du module est terminée ,La prochaine étape park-member Le codage de la fonction d'affaires normale du module est terminé .

Référence du blog

原网站

版权声明
本文为[Zhuang XiaoYan]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/175/202206241324330269.html