Est-il raisonnable de bloquer lors de l'initialisation de Spring ?
PHP中文网
PHP中文网 2017-06-23 09:14:20
0
3
930

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中文网

认证高级PHP讲师

répondre à tous(3)
黄舟

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é.

巴扎黑

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.

洪涛

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal