Quelle est la différence entre BeanFactory et ApplicationContext

Quelle est la différence entre BeanFactory et ApplicationContext ?

    BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。其中ApplicationContext是BeanFactory的子接口。

(1) BeanFactory : il s'agit de l'interface de niveau inférieur de Spring, qui contient les définitions de divers beans, lit les documents de configuration des beans, gère le chargement et l'instanciation des beans, contrôle le cycle de vie des beans et maintient les dépendances entre les beans. En tant que dérivation de BeanFactory, l'interface ApplicationContext fournit des fonctions de framework plus complètes en plus des fonctions de BeanFactory :

①Hériter de MessageSource, donc prendre en charge l'internationalisation.

② Méthode d'accès au fichier de ressources unifiée.

③ Fournir l'événement d'enregistrement du bean dans l'écouteur.

④ Chargez plusieurs fichiers de configuration en même temps.

⑤ Chargez plusieurs contextes (hérités), de sorte que chaque contexte se concentre sur une couche spécifique, telle que la couche Web de l'application.

(2) ① BeanFactroy utilise la forme de chargement paresseux pour injecter des beans, c'est-à-dire que lorsqu'un bean est utilisé (appelez getBean()), le bean est chargé et instancié. De cette façon, nous ne pouvons pas trouver certains problèmes de configuration Spring existants. Si une propriété du Bean n'est pas injectée, après le chargement de la BeanFacotry, une exception sera levée jusqu'à ce que la méthode getBean soit appelée pour la première fois.

    ②ApplicationContext,它是在容器启动时,一次性创建了所有的Bean。这样,在容器启动时,我们就可以发现Spring中存在的配置错误,这样有利于检查所依赖属性是否注入。 ApplicationContext启动后预载入所有的单实例Bean,通过预载入单实例bean ,确保当你需要的时候,你就不用等待,因为它们已经创建好了。

    ③相对于基本的BeanFactory,ApplicationContext 唯一的不足是占用内存空间。当应用程序配置Bean较多时,程序启动较慢。

(3) BeanFactory est généralement créé par programme et ApplicationContext peut également être créé de manière déclarative, par exemple en utilisant ContextLoader.

(4) BeanFactory et ApplicationContext prennent en charge l'utilisation de BeanPostProcessor et BeanFactoryPostProcessor, mais la différence entre les deux est que BeanFactory doit être enregistré manuellement, tandis qu'ApplicationContext est automatiquement enregistré.

Je suppose que tu aimes

Origine blog.csdn.net/qq_35222843/article/details/121695506
conseillé
Classement