Maison  >  Questions et réponses  >  le corps du texte

Est-il raisonnable de bloquer lors de l'initialisation de Spring ?

Lisez le code de NettyRPC et constatez RpcServer 中实现了 Spring 的 InitializingBean qu'un serveur Netty a été démarré dans l'implémentation de la méthode et bloqué.

@Override
public void afterPropertiesSet() throws Exception {
    EventLoopGroup bossGroup = new NioEventLoopGroup();
    EventLoopGroup workerGroup = new NioEventLoopGroup();
    try {       
        // 前略...        
        future.channel().closeFuture().sync();
    } finally {
        workerGroup.shutdownGracefully();
        bossGroup.shutdownGracefully();
    }
}

Adresse du code source :
https://github.com/luxiaoxun/...

Ce que je veux demander, c'est si un tel blocage affectera l'initialisation de Spring ? (Je n'ai pas lu le code source de Spring, donc je ne connais pas la situation. Veuillez me donner quelques conseils...

PHP中文网PHP中文网2674 Il y a quelques jours893

répondre à tous(3)je répondrai

  • 黄舟

    黄舟2017-06-23 09:16:20

    J'ai l'impression d'avoir posé une question très stupide... Le processus d'initialisation du conteneur Spring est monothread s'il est bloqué ici, cela signifie naturellement que... le travail de suivi ne peut pas être effectué.

    Un Bean test est ajouté à la fin du fichier de configuration du bean, et le journal sera enregistré lors de l'initialisation, mais le résultat n'est pas imprimé.

    répondre
    0
  • 巴扎黑

    巴扎黑2017-06-23 09:16:20

    Cela devrait être raisonnable, car si un bean est instancié par plusieurs threads, la dépendance entre le bean et le bean sera difficile à gérer et la complexité du code augmentera fortement.

    répondre
    0
  • PHP中文网

    PHP中文网2017-06-23 09:16:20

    Raisonnable, la raison a été évoquée ci-dessus. Si vous devez initialiser des beans de manière asynchrone, réécrivez simplement la logique de BeanFactory, à condition de vous assurer que ces beans ne dépendent pas les uns des autres

    répondre
    0
  • Annulerrépondre