سؤال

انا جديد إلى إطار الربيع, لقد لعب مع حولها ووضع بعض العينات تطبيقات معا لأغراض تقييم الربيع MVC للاستخدام في القادم مشروع الشركة.حتى الآن أنا حقا أحب ما أرى في الربيع MVC, يبدو من السهل جدا استخدام و يشجعك على كتابة فصول جدا وحدة اختبار الصديقة.

مجرد تمرين أكتب طريقة الرئيسي من العينة/اختبار المشاريع.شيء واحد أنا غير متأكد حول نفس الاختلافات بين BeanFactory و ApplicationContext الذي هو مناسبة للاستخدام في الظروف ؟

أنا أفهم أن ApplicationContext يمتد BeanFactory, ولكن إذا أنا مجرد كتابة بسيطة الأسلوب الرئيسي, هل أنا في حاجة إلى الوظيفة الإضافية التي ApplicationContext يوفر?فقط بالضبط ما هو نوع من وظائف اضافية لا ApplicationContext تقدم ؟

بالإضافة إلى الإجابة "التي يجب أن تستخدم في طريقة الرئيسي ()", هل هناك أي معايير أو مبادئ توجيهية قدر التنفيذ يجب أن تستخدم في مثل هذا السيناريو ؟ أن بلدي الرئيسية() طريقة كتابة تعتمد على فول/تكوين التطبيق في شكل XML - هل هذا مجرد افتراض ، أو أنا قفل المستخدم في شيء معين ؟

و هل هذا يجيب على تغيير في بيئة الويب - إذا كان أي من دروسي في حاجة إلى أن يكون على بينة من الربيع ، هم أكثر عرضة حاجة ApplicationContext?

شكرا على أي مساعدة.أنا أعرف الكثير من هذه الأسئلة ربما تكون الإجابة في دليل مرجعي, ولكن أواجه صعوبة في العثور على تفاصيل واضحة من هذين واجهات إيجابيات/سلبيات كل دون القراءة من خلال دليل مع غرامة بين مشط الأسنان.

هل كانت مفيدة؟

المحلول

الربيع مستندات كبيرة على هذا: 3.8.1.BeanFactory أو ApplicationContext?.لديهم جدول المقارنة ، وأنا بعد مقتطف:

فول مصنع

  • فول مثيل/الأسلاك

تطبيق السياق

  • فول مثيل/الأسلاك
  • التلقائي BeanPostProcessor التسجيل
  • التلقائي BeanFactoryPostProcessor التسجيل
  • مريحة MessageSource الوصول (على i18n)
  • ApplicationEvent المنشور

حتى إذا كنت بحاجة إلى أي من النقاط الواردة في سياق تطبيق الجانب, يجب عليك استخدام ApplicationContext.

نصائح أخرى

للي، والفرق الأساسي لاختيار BeanFactory على ApplicationContext يبدو أن هذا ApplicationContext وقبل مثيل كل من الفاصوليا. من و<م > الربيع مستندات :

<اقتباس فقرة>   

والربيع يحدد خصائص ويحل التبعيات في وقت متأخر ممكن، عند إنشاء الفول في الواقع. وهذا يعني أن وعاء الربيع الذي تحميلها بشكل صحيح يمكن أن تولد في وقت لاحق استثناء عند طلب كائن إذا كان هناك مشكلة في إنشاء هذا الكائن أو أحد تبعياته. على سبيل المثال، الفول يطرح استثناء نتيجة لخاصية مفقودة أو غير صالحة. هذه الرؤية يحتمل أن تأخر بعض القضايا التكوين هو لماذا تطبيقات ApplicationContext افتراضيا قبل مثيل الفاصوليا المفرد. على حساب بعض الوقت مقدما والذاكرة لإنشاء هذه الحبوب قبل الحاجة إليها فعلا، تكتشف مشكلات تكوين عند إنشاء ApplicationContext، وليس في وقت لاحق. لا يزال بإمكانك تجاوز هذا السلوك الافتراضي بحيث الفاصوليا المفرد وكسول، تهيئة، بدلا من أن يكون ما قبل مثيل.

ونظرا لهذا، اخترت في البداية BeanFactory لاستخدامها في اختبارات التكامل / أداء منذ لم أكن أريد لتحميل تطبيق كامل لاختبار حبوب معزولة. ومع ذلك - وشخص يصحح لي إذا كنت مخطئا - BeanFactory لا يدعم التكوين XML classpath. حتى BeanFactory وApplicationContext تقديم كل ميزة حاسمة أردت، ولكن لا فعل كليهما.

وبالقرب من ما استطيع ان اقول، الملاحظة في وثائق حول تجاوز السلوك مثيل الافتراضي تجري في التكوين، وانها في الفول، لذلك لا أستطيع أن مجرد تعيين سمة "الحرف الأول كسول" في ملف XML أو أنا عالقة الحفاظ على نسخة منه للاختبار واحد للنشر.

ما انتهى بي الأمر القيام مددت ClassPathXmlApplicationContext لتحميل بتكاسل الفاصوليا لاستخدامها في الاختبارات مثل ذلك:

public class LazyLoadingXmlApplicationContext extends ClassPathXmlApplicationContext {

    public LazyLoadingXmlApplicationContext(String[] configLocations) {
        super(configLocations);
    }

    /**
     * Upon loading bean definitions, force beans to be lazy-initialized.
     * @see org.springframework.context.support.AbstractXmlApplicationContext#loadBeanDefinitions(org.springframework.beans.factory.xml.XmlBeanDefinitionReader)
     */

    @Override
    protected void loadBeanDefinitions(XmlBeanDefinitionReader reader) throws IOException {
        super.loadBeanDefinitions(reader);
        for (String name: reader.getBeanFactory().getBeanDefinitionNames()) {
            AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) reader.getBeanFactory().getBeanDefinition(name);
            beanDefinition.setLazyInit(true);
        }
    }

}

الربيع يوفر نوعين من الحاويات اللجنة الاولمبية الدولية ، هو واحد XMLBeanFactory وغيرها ApplicationContext.

+---------------------------------------+-----------------+--------------------------------+
|                                       | BeanFactory     |       ApplicationContext       |
+---------------------------------------+-----------------+--------------------------------+
| Annotation support                    | No              | Yes                            |
| BeanPostProcessor Registration        | Manual          | Automatic                      |
| implementation                        | XMLBeanFactory  | ClassPath/FileSystem/WebXmlApplicationContext|
| internationalization                  | No              | Yes                            |
| Enterprise services                   | No              | Yes                            |
| ApplicationEvent publication          | No              | Yes                            |
+---------------------------------------+-----------------+--------------------------------+

enter image description here

  • FileSystemXmlApplicationContext الفول تحميل بواسطة المسار الكامل.
  • ClassPathXmlApplicationContext الفول تحميل بواسطة CLASSPATH
  • XMLWebApplicationContext و AnnotationConfigWebApplicationContext الفاصوليا تحميلها من خلال تطبيق ويب السياق.
  • AnnotationConfigApplicationContext تحميل الربيع الفاصوليا من الشرح على أساس التكوين.

على سبيل المثال:

  ApplicationContext applicationContext = new AnnotationConfigApplicationContext(BeansConfiguration.class);
  • ApplicationContext هي الحاوية تهيئة من قبل ContextLoaderListener أو ContextLoaderServlet تعريفه في web.xml و ContextLoaderPlugin المحددة في struts-config.xml.

ملاحظة: XmlBeanFactory هو إهمال اعتبارا من الربيع 3.1 في صالح DefaultListableBeanFactory و XmlBeanDefinitionReader.

لإضافة على ما أجاب ميغيل بينغ، وهنا <لأ href = "http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#context-introduction-ctx-vs- beanfactory "يختلط =" noreferrer "> قسم آخر من وثائق أن تجيب على هذا أيضا:

<اقتباس فقرة>   

ونسخة مختصرة: استخدام ApplicationContext إلا إذا كان لديك سبب وجيه حقا لعدم القيام بذلك. لأولئك منكم الذين يبحثون عن أكثر قليلا عمق بالنسبة ل'ولكن لماذا' من التوصية المذكورة أعلاه، والحفاظ على القراءة.

و(نشر هذا لأي المبتدئين الربيع في المستقبل الذي قد قرأت هذا السؤال)

  1. ApplicationContext هو وسيلة أكثر المفضل من BeanFactory

  2. في ربيع جديد الإصدارات BeanFactory يتم استبدال ApplicationContext.ولكن لا يزال BeanFactory موجود الوراء التوافق

  3. ApplicationContext extends BeanFactory وله الفوائد التالية
    • وهو يدعم تدويل للرسائل النصية
    • وهو يدعم الحدث نشر المسجلين المستمعين
    • الوصول إلى الموارد مثل عناوين المواقع و الملفات

وأعتقد أنه من الأفضل دائما استخدام ApplicationContext، إلا إذا كنت في بيئة متنقلة مثل شخص آخر قال بالفعل. ApplicationContext ديه المزيد من الوظائف وأنت بالتأكيد تريد استخدام PostProcessors مثل RequiredAnnotationBeanPostProcessor، AutowiredAnnotationBeanPostProcessor وCommonAnnotationBeanPostProcessor، والتي سوف تساعد على تبسيط ملفات التكوين الربيع الخاص بك، ويمكنك استخدام الشروح مثلRequired،PostConstruct،Resource وغيرها في الفول الخاص بك .

وحتى لو كنت لا تستخدم جميع العروض الاشياء ApplicationContext، فمن الأفضل لاستخدامها على أي حال، ثم في وقت لاحق إذا قررت استخدام بعض الاشياء الموارد مثل الرسائل أو معالجات آخر، أو مخطط آخر لإضافة النصائح المعاملات و هذا، سيكون لديك بالفعل ApplicationContext ولن تحتاج لتغيير أي رمز.

إذا كنت تكتب بذاتها التطبيق، تحميل ApplicationContext في الأسلوب الرئيسي الخاص بك، وذلك باستخدام ClassPathXmlApplicationContext، والحصول على الفول الرئيسي واستدعاء شوطه () (أو بأي طريقة كانت) لبدء التطبيق. إذا كنت تكتب تطبيق ويب، استخدم ContextLoaderListener في web.xml بحيث يخلق ApplicationContext ويمكنك بعد الحصول عليها من ServletContext، بغض النظر عما إذا كنت تستخدم JSP، JSF، JSTL، الدعامات، نسيج، الخ .

وأيضا، تذكر يمكنك استخدام عدة ملفات التكوين الربيع ويمكنك إما خلق ApplicationContext من خلال سرد كافة الملفات في المنشئ (أو إدراجها في سياق المعلمة لContextLoaderListener)، أو يمكنك فقط تحميل التكوين الرئيسي ملف الذي لديه بيانات الاستيراد. يمكنك استيراد ملف تكوين الربيع في ملف التكوين ربيع آخر باستخدام <الموارد استيراد = "otherfile.xml" /> وهو أمر مفيد جدا عند برمجيا خلق ApplicationContext في الأسلوب الرئيسي وتحميل فقط ملف التكوين الربيع واحد.

ApplicationContext: تحميل الربيع الفاصوليا تكوين في الربيع ملف تكوين وإدارة دورة حياة الربيع الفول عند تشغيل الحاويات.لن انتظر حتى getBean("springbeanref") ويسمى.

BeanFactory تحميل الربيع الفاصوليا تكوين في الربيع ملف تكوين إدارة دورة حياة الربيع فول عندما نسميه getBean("springbeanref").لذلك عندما ندعو getBean("springbeanref") في وقت الربيع فول دورة الحياة تبدأ.

وبالنسبة للجزء الأكبر، ويفضل ApplicationContext إلا إذا كنت بحاجة إلى توفير الموارد، مثل على تطبيقات الهاتف المتحرك.

وأنا لست متأكدا اعتمادا على شكل XML، ولكن أنا متأكد من أن تطبيقات الأكثر شيوعا من ApplicationContext هم XML مثل ClassPathXmlApplicationContext، XmlWebApplicationContext، وFileSystemXmlApplicationContext. تلك هي ثلاثة فقط لقد استعملت من أي وقت مضى.

إذا وضع الخاص بك التطبيق على شبكة الإنترنت، أنه من الأسلم أن نقول لكم سوف تحتاج إلى استخدام XmlWebApplicationContext.

إذا كنت تريد الفول ليكون على بينة من الربيع، هل يمكن أن يكون لهم تنفيذ BeanFactoryAware و / أو ApplicationContextAware لذلك، بحيث يمكنك استخدام إما BeanFactory أو ApplicationContext واختيار واجهة لتنفيذ.

BeanFactory و ApplicationContext كلاهما من طرق للحصول على الفول من الربيع اللجنة الأولمبية الدولية حاوية ولكن لا تزال هناك بعض الفرق.

BeanFactory هو الفعلي الحاويات التي instantiates, بتكوين, وتدير عددا من فول.هذه الحبوب عادة ما تتعاون مع بعضها البعض ، وبالتالي يكون لها تبعيات بين أنفسهم.هذه التبعيات تنعكس في التكوين البيانات المستخدمة من قبل BeanFactory.

BeanFactory و ApplicationContext وكلاهما واجهات جافا و ApplicationContext يمتد BeanFactory.كلاهما التكوين باستخدام XML ملفات التكوين.باختصار BeanFactory يوفر الأساسية انعكاس السيطرة(اللجنة الأولمبية الدولية) و حقن التبعية (دي) الميزات في حين يوفر ApplicationContext المتقدمة الميزات.

أ BeanFactory يمثل واجهة "org.springframework.الفاصوليا.مصنع"حيث BeanFactory التي توجد عدة تطبيقات.

ClassPathResource resource = new ClassPathResource("appConfig.xml");
XmlBeanFactory factory = new XmlBeanFactory(resource);

الفرق

  1. BeanFactory مثيل الفول عند استدعاء getBean() الطريقة حين ApplicationContext مثيل المفرد الفول عند الحاوية ، لا تنتظر getBean() أن يسمى.

  2. BeanFactory لا توفر الدعم ل تدويل ولكن ApplicationContext يوفر الدعم له.

  3. وثمة فرق آخر بين BeanFactory مقابل ApplicationContext هو القدرة على نشر الحدث الفاصوليا المسجلين المستمع.

  4. واحدة من شعبية تنفيذ BeanFactory واجهة XMLBeanFactory في حين أن واحدة من شعبية تنفيذ ApplicationContext واجهة ClassPathXmlApplicationContext.

  5. إذا كنت تستخدم السيارات الأسلاك باستخدام BeanFactory مما تحتاج إلى تسجيل AutoWiredBeanPostProcessor باستخدام API التي يمكنك تكوين في XML إذا كنت تستخدم ApplicationContext.في ملخص BeanFactory هو موافق على الاختبار وعدم استخدام الإنتاج ولكن ApplicationContext أكثر ميزة الغنية حاوية تنفيذ وينبغي أن يفضلها على BeanFactory

  6. BeanFactory افتراضي لها الدعم كسول تحميل ApplicationContext بشكل افتراضي الدعم عدوانية التحميل.

الفرق بين BeanFactory و ApplicationContext هي التالية:

  1. BeanFactory يستخدم كسول التهيئة ولكن ApplicationContext يستخدم حريصة التهيئة.في حالة BeanFactory الفول يتم إنشاؤه عند استدعاء getBeans (طريقة) ، ولكن الفول هو خلق مقدما في حالة ApplicationContext عندما ApplicationContext يتم إنشاء الكائن.
  2. BeanFactory صراحة توفير الموارد كائن باستخدام بناء الجملة ولكن ApplicationContext إنشاء وإدارة الموارد الأشياء من تلقاء نفسها.
  3. BeanFactory لا يعتمد internatiolization ولكن ApplicationContext يدعم التدويل.
  4. مع BeanFactory الشرح على أساس التبعية الحقن غير معتمد ولكن الشرح على أساس التبعية حقن معتمد في ApplicationContext.

باستخدام BeanFactory:

BeanFactory beanfactory = new XMLBeanFactory(new FileSystemResource("spring.xml")); Triangle triangle =(Triangle)beanFactory.getBean("triangle");

باستخدام ApplicationContext:

ApplicationContext context = new ClassPathXMLApplicationContext("spring.xml") Triangle triangle =(Triangle)beanFactory.getBean("triangle");

وميزة مصفوفة مصنع فول مقابل السياق التطبيق <لأ href = "http://docs.spring.io/spring/docs/2.5.x/reference/beans.html#context-introduction-ctx-vs-beanfactory" يختلط = "نوفولو noreferrer"> مصدرها مستندات الربيع

<الفرعية> لقطة من ملامح BeanFacotry وApplicationContext

أساسا نحن يمكن أن تخلق الربيع كائن حاوية بطريقتين

  1. باستخدام BeatFactory
  2. باستخدام ApplicationContext

وكلاهما واجهات

استخدام الطبقات تنفيذ يمكننا إنشاء كائن حاوية الربيع

القادمة إلى الاختلافات

BeanFactory

  1. لا تدعم الشرح على أساس التبعية الحقن.

  2. لا يدعم I18N

  3. بشكل افتراضي دعمها تحميل كسول

  4. فإنه لا يسمح بتكوين عدة ملفات التكوين.

مثلا:BeanFactory السياق=new XmlBeanFactory(الموارد الجديدة("applicationContext.xml"));

ApplicationContext

  1. دعم الشرح على أساس التبعية Injection.-@Autowired, @PreDestroy

  2. دعم I18N

  3. لها افتراضيا دعم عدوانية التحميل.

  4. أنها تسمح بتكوين عدة ملفات التكوين.

مثلا:
ApplicationContext السياق=new ClasspathXmlApplicationContext("applicationContext.xml");

أ. فارق واحد بين مصنع الفول و سياق التطبيق هو أن الأول مثيل فقط الفول عند استدعاء getBean () طريقة في حين ApplicationContext instantiates سينغلتون الفول عند بدء الحاوية، فإنه لا انتظر getBean ليتم استدعاؤها.

ب.

ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");

أو

ApplicationContext context = new ClassPathXmlApplicationContext{"spring_dao.xml","spring_service.xml};

ويمكنك استخدام ملف xml واحد أو أكثر اعتمادا على متطلبات المشروع. وأنا هنا باستخدام اثنين من ملفات XML أي واحد للحصول على تفاصيل التكوين لفئات الخدمات الأخرى لداو الطبقات. هنا ClassPathXmlApplicationContext هو طفل من ApplicationContext.

وج. BeanFactory الحاويات غير الحاويات الأساسية، فإنه يمكن إنشاء كائنات فقط وحقن التبعيات. ولكننا لا يمكن أن نعلق الخدمات الأخرى مثل الأمن، والمعاملات، والرسائل وما إلى ذلك لتقديم كافة الخدمات لدينا لاستخدام ApplicationContext الحاويات.

د. BeanFactory لا توفر الدعم لتدويل أي I18N ولكنها توفر ApplicationContext الدعم له.

وه. BeanFactory الحاويات لا يدعم ميزة AutoScanning (دعم الشرح على أساس التبعية حقن)، ولكن يدعم ApplicationContext الحاويات.

و. سوف Beanfactory الحاويات تقم بإنشاء كائن فول حتى وقت الطلب. وهذا يعني Beanfactory الحاويات حمولة حبوب بتكاسل. في حين يخلق ApplicationContext الحاويات كائنات سينغلتون الفول في وقت تحميل فقط. فهذا يعني أن هناك تحميل في وقت مبكر.

وز. دعم Beanfactory الحاويات اثنين فقط نطاقات (المفرد والنموذج) من الفاصوليا. لكن ApplicationContext الحاويات يدعم جميع نطاق الفاصوليا.

وارجع هذا المستند من مستندات الربيع:

<وأ href = "http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html#context-introduction-ctx-vs-beanfactory" يختلط = "نوفولو"> <لأ href = "http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html#context-introduction-ctx-vs -beanfactory "يختلط =" نوفولو "> http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html#context-introduction-ctx-vs-beanfactory

و5.15.1 BeanFactory أو ApplicationContext؟

استخدم لApplicationContext إلا إذا كان لديك سبب وجيه لعدم القيام بذلك.

ولأن ApplicationContext يشمل جميع وظائف من BeanFactory، فمن المستحسن عموما على BeanFactory، باستثناء حالات قليلة مثل في الصغير حيث استهلاك الذاكرة قد تكون حاسمة وعدد قليل كيلوبايت إضافية قد تحدث فرقا. ومع ذلك، بالنسبة لمعظم تطبيقات المشاريع النموذجية والنظم، وApplicationContext هو ما سوف ترغب في استخدامها. ربيع 2.0 والإصدارات الأحدث يجعل الاستخدام المكثف للنقطة تمديد BeanPostProcessor (لإحداث إنشاء الوكلاء وهلم جرا). إذا كنت تستخدم فقط BeanFactory عادي، قدرا كبيرا من الدعم مثل المعاملات وAOP لن تصبح نافذة المفعول، على الأقل لا يخلو من بعض الخطوات الإضافية على الجزء الخاص بك. هذا الوضع يمكن أن يكون مربكا لأن ليس هناك ما هو الخطأ في الواقع مع التكوين.

وApplicationContext هو الاخ الاكبر للBeanFactory وهذا من شأنه أن كل شيء BeanFactory وتوفير بالإضافة إلى أشياء أخرى كثيرة.

وبالإضافة إلى قدرات دورة حياة org.springframework.beans.factory.BeanFactory القياسية، تطبيقات ApplicationContext كشف و  استدعاء الفاصوليا ApplicationContextAware وكذلك ResourceLoaderAware، ApplicationEventPublisherAware وMessageSourceAware الفاصوليا.

في الوقت الحقيقي السيناريو ، الفرق بين الربيع الأولمبية الدولية الأساسية حاوية (BeanFactory) المتقدمة J2EE حاوية (ApplicationContext) هي على النحو التالي.

  1. BeanFactory خلق الكائنات الفول (أي POJO الطبقات) المذكورة في spring.xml ملف (<bean></bean>) فقط عند استدعاء .getBean (طريقة) ، ولكن حين ApplicationContext يخلق الأشياء كل الفاصوليا (<bean></bean> إذا نطاقها لم تذكر صراحة بأنها "النموذج") تكوين في spring.xml أثناء تحميل spring.xml الملف نفسه.

  2. BeanFactory:(كسول حاوية لأنه يخلق الكائنات الفول فقط عندما تدعو صراحة من المستخدم/الرئيسية فئة)

    /*
     * Using core Container - Lazy container - Because it creates the bean objects On-Demand
     */
    //creating a resource
    Resource r = (Resource) new ClassPathResource("com.spring.resources/spring.xml");
    //creating BeanFactory 
    BeanFactory factory=new XmlBeanFactory(r);
    
    //Getting the bean for the POJO class "HelloWorld.java"
    HelloWorld worldObj1 = (HelloWorld) factory.getBean("test");
    

    ApplicationContext:(حريصة حاوية لأن من خلق الأشياء من كل المفرد الفول أثناء تحميل spring.xml الملف نفسه)

    ApplicationContext context = new ClassPathXmlApplicationContext("com/ioc/constructorDI/resources/spring.xml");
    
  3. تقنيا باستخدام ApplicationContext ينصح لأنه في الوقت الحقيقي التطبيقات الفول الكائنات سيتم إنشاؤها في حين أن التطبيق هو الشروع في الملقم نفسه.وهذا يقلل من وقت الاستجابة على طلب المستخدم كما الكائنات متاحة بالفعل للرد.

وأعتقد أنه من الجدير بالذكر أنه منذ الربيع 3، إذا كنت ترغب في إنشاء المصنع، يمكنك أيضا استخدام في @configuration الشرح جنبا إلى جنب مع سليم <لأ href =" https://docs.spring.io/spring-framework/ مستندات / الحالي / جافادوك-المعهد / المنظمة / springframework / السياق / الشرح / Scope.html "يختلط =" نوفولو noreferrer "> @scope

@Configuration
public class MyFactory {

    @Bean
    @Scope("prototype")
    public MyClass create() {
        return new MyClass();
    }
}

والمصنع الخاص بك ينبغي أن تكون واضحة بالحاويات الربيع استخدام في @ComponentScan الشرح أو التكوين أكس

الربيع الفول نطاقات المادة من موقع baeldung

لا تستخدم BeanFactory للتطبيقات غير المستندة إلى الويب لأنها تدعم فقط سينغلتون والنموذج الفول نطاقات.

وعلى الرغم ApplicationContext الحاويات التي يدعمها كل الفول نطاقات لذلك يجب استخدامه لتطبيقات الويب.

باختصار:

على ApplicationContext يشمل جميع وظائف BeanFactory.يوصى عموما لاستخدام السابق.

هناك بعض حالات محدودة مثل تطبيقات الهاتف المتحرك ، حيث استهلاك الذاكرة قد تكون حاسمة.

في هذه السيناريوهات يمكن أن يكون مبررا لاستخدام أكثر خفيفة الوزن BeanFactory.ومع ذلك ، في معظم تطبيقات المؤسسة ، ApplicationContext هو ما سوف تحتاج إلى استخدام.

لمزيد من المعلومات ، راجع بلدي بلوق وظيفة:

الفرق بين BeanFactory و ApplicationContext في الربيع – جافا الربيع بلوق من أساسيات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top