العلاقة بين حاوية الفول وحاوية الربيع
تحدد معلومات تكوين الفول تنفيذ وتبعيات الفاصوليا. تنشئ حاوية الربيع سجل تعريف الفول داخل الحاوية استنادًا إلى أشكال مختلفة من معلومات تكوين الفاصوليا ، ثم يتم تحميلها وتثبيط الفاصوليا وفقًا للسجل ، وتضع تبعيات بين الفاصوليا والفاصوليا. أخيرًا ، يتم وضع هذه الفاصوليا الجاهزة في تجمع ذاكرة التخزين المؤقت للحبوب للتطبيقات الخارجية للاتصال.
ستقدمك هذه المقالة بالتفصيل حول استخدام طرق الترميز لتكوين الفاصوليا ديناميكيًا في الربيع. سنشاركهم للرجوع إليه وتعلمك. لن أقول الكثير أدناه ، دعنا نلقي نظرة على المقدمة التفصيلية معًا.
1 DefaultListableBeanfactory
DefaultListableBeanfactory ينفذ واجهة configurableListableBeanfactory ، والتي يمكن أن تضخ الفاصوليا ديناميكيا من خلال هذه الفئة. من أجل التأكد من أنه يمكن أيضًا تعزيز الفول المحقن بواسطة AOP ، نحتاج إلى تنفيذ مصنع BeanFactoryPostProcessor.
الفاصوليا التي تتطلب الحقن الديناميكي:
Public Class Bookservice {bookdao bookdao ؛ public void setbookdao (bookdao bookdao) {this.bookdao = bookdao ؛ } public bookdao getBookdao () {return bookdao ؛ }}تنفيذ واجهة ما بعد المعالجات المصنع للفاصوليا:
ComponentPublic Class Class BookserviceFactoryBean تنفذ beanfactorypostprocessor {public void postprocessBeanfactory (configurableListableBeanfactory beanfactory) beansexception {defaultListableBeanfactory factory = (defaultListableBeanfactory) beanfactory ؛ // Bean Definition BeanDefinitionBuilder Builder = BeanDefinitionBuilder.GenericBeanDefinition (bookservice.class) ؛ // قم بتعيين Property Builder.AddPropertyReference ("Bookdao" ، "Bookdao") ؛ // تسجيل Bean Definition Factory.registerBeanDefinition ("Bookservice1" ، builder.getRawBeanDefinition ()) ؛ // سجل مثيل Bean Factory.regtersingleton ("Bookservice2" ، net.deniro.spring4.dynamic.bookservice ()) ؛ }}من المفترض هنا أن تم حقن Bookdao في الحاوية (XML أو طريقة التعليقات التوضيحية).
هنا ، يمكننا تسجيل تعريف الفول أو تسجيل مثيل الفول مباشرة.
إعدادات:
<السياق: مكون المسح الضوئي package = "net.deniro.spring4.dynamic" />
اختبارات الوحدة:
BookService Bookservice1 = (Bookservice) Context.getBean ("Bookservice1") ؛ Assertnotnull (bookservice1) ؛ assertnotnull (bookservice1.getbookdao ()) ؛ bookserviceervice2 = (bookservice) context.getBean ("bookservice2") ؛2 علامات مخصصة
لتغليف المكونات بشكل أفضل وتعزيز سهولة استخدامها ، نحدد المكونات كملصقات.
الخطوات لتخصيص العلامة هي:
إنشاء bookservice.xsd ضمن مجلد المخطط في الموارد
<؟ xmlns: beans = "http://www.springframework.org/schema/beans مساحة الاسم = "http://www.springframework.org/schema/beans"/> <!-تحديد علامة خدمة الكتاب-> <xsd: element name = "book-service"> <xsd: complextype> <xsd: complexcontent> <xsd: extension base: <xsd: اسم السمة = "dao" type = "xsd: string" use = "required"/> </xsd: extension> </xsd: complexContent> </ssd: complextype> </xsd: element> </sssd: schema>
ثم حدد محلل خدمة الخدمة:
Public Class BookservicedEfinitionParser تنفذ beandefinitionparser {public Beandefinition parse (عنصر العنصر ، parsercontext parsercontext) {// إنشاء Bean DefinistbeanDefinitionBuilder Builder = BeanDefinitionBuilder.genericbeandefinition (bookservice.class) ؛ // حقن سلسلة السمة المخصصة dao = element.getAttribute ("dao") ؛ Builder.AddPropertyReference ("Bookdao" ، Dao) ؛ . العودة لاغية. }}ثم سجل المحلل الذي حددته للتو في مساحة الاسم:
الطبقة العامة BookservicenamesPaceHandler تمدد namespacehandlersupport {public void init () {registerBeanDefinitionParser ("خدمة الكتاب" ، New BookserviniteFinitionParser ()) ؛ }}ثم قم بإنشاء مجلد Meta-Inf في الموارد وإنشاء spring.schemas و spring.handlers ، والتي يتم استخدامها لتكوين مسار ملف بنية المستند للعلامة المخصصة والمحلل الذي يمتلك مساحة الاسم المخصصة.
مسار الملف
spring.handlers:
http/: //www.deniro.net/schema/service=net.deniro.spring4.dynamic.bookservicenamespaceHandler
spring.schemas:
http/: //www.deniro.net/schema/service.xsd=schema/bookservice.xsd
ملاحظة: يجب وضع ملف XSD في دليل Descendants للموارد.
نقلاً عن العلامات المخصصة:
<؟ Xmlns: Me = "http://www.deniro.net/schema/service" http://www.deniro.net/schema/service http://www.deniro.net/schema/service.xsd "> <bean id =" bookdao "/> <me: book-service dao =" bookdao "/> </beans>
هنا ، أشرنا إلى العلامة المخصصة في الرأس ووصفناها "أنا" ، وبعد ذلك يمكننا استخدامها O (∩_∩) o ~
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.