تحية للجميع. ستغطي هذه المقالة الأسئلة الأساسية حول موضوع "Spring Spring". إنه يهدف إلى بدء المطورين ، ويمكن أن يكون مفيدًا في التحضير للمقابلة. اتضح أن تكون مضغوطة جدا بالمقارنة مع غيرها من المواد.

الأسئلة
ما هو التمهيد الربيع؟Spring Boot عبارة عن مجموعة من الوحدات النمطية التي تم تكوينها مسبقًا والتي تعمل في Spring Framework وتبسيط تكوين تطبيق Spring.
فيما يلي بعض الوحدات المركزية:
- الربيع التمهيد التبعيات. يحتوي على تبعيات الإصدار.
- الربيع التمهيد بداية الوالدين. الأصل pom.xml
- الربيع التمهيد للمبتدئين. الوحدة الأم للمبتدئين
- الربيع التمهيد autoconfigure. يحتوي على وحدات لبداية ضبط السيارات
- الربيع التمهيد المحرك. يسمح لك بمراقبة التطبيق وإدارة إنشائه
ما هي فوائد Spring Boot؟- التهيئة التلقائية للعديد من الإعدادات لتفادي كود النمطي
- يتيح لك تكوين التطبيق بسهولة عندما لا تتناسب الإعدادات الافتراضية
- يمكن أن مشروع الربيع التمهيد ترجمة إلى ملف JAR مستقل
- يوفر مجموعة من التبعيات التي تم اختبارها بالفعل للعمل بشكل صحيح مع بعضها البعض
- يحتوي على حاويات ويب مدمجة تجعل من السهل اختبار التطبيق.
كيف يعمل؟ كيف يفهم ماذا وكيف يتم تكوينه؟يفترض ما تحتاجه بناءً على التبعيات في classpath. "الاتفاق على التكوين" - سيتم ضبط إعداد Spring تلقائيًا بإعدادات محددة خصيصًا ، والتي يمكن بعد ذلك تجاوزها.
هناك العديد من التعليقات التوضيحية لهذا ، @ConditionalOnClass
و @ConditionalOnBean
و @ConditionalOnMissingBean
و @ConditionalOnMissingClass
، والتي تسمح لك بتطبيق الشروط على فئات @ Configuration و @ Bean في هذه الفئات.
على سبيل المثال:
سيتم إنشاء الحبة فقط إذا كانت هناك تبعية محددة في classpath.
استخدم @ConditionalOnClass
، @ConditionalOnClass
اسم الفصل من classpath هناك.
سيتم إنشاء الحبة فقط إذا لم يكن هناك حبة من هذا النوع أو بهذا الاسم في الحاوية.
استخدم @ConditionalOnMissingBean
، @ConditionalOnMissingBean
بتعيين اسم أو نوع الحبة للتحقق هناك.
ما يؤثر على تكوين الحذاء الربيع؟هناك قائمة من الشروحات الشرطية ، يتم استخدام كل منها للتحكم في تكوين الحبوب. فيما يلي قائمة بهذه التعليقات التوضيحية (في الواقع هناك المزيد):
كيف يتم تعريف الممتلكات؟ أين يقع PropertySource الافتراضي في Spring Boot؟يستخدم Spring Boot ترتيبًا خاصًا لـ PropertySource للسماح بتجاوز قيم الخصائص. فيما يلي ترتيب المصادر للحصول على خصائص التطبيق:
- الإعدادات العامة من دليل devtools.properties ~ / spring-boot
- الإعدادات من الشرح
@TestPropertySource
من الاختبارات - الخصائص @ SpringBootTest # الخصائص
- وسيطات سطر الأوامر
- الخصائص من SPRING_APPLICATION_JSON
- معلمات تهيئة ServletConfig
- معلمات تهيئة ServletContext
- سمات JNDI من java: comp / env
- خصائص نظام جافا (System.getProperties ())
- متغيرات نظام التشغيل
- RandomValueProperySource
- خصائص ملفات التعريف ، على سبيل المثال YAML أو application- {profile} .properties
- application.properties و yaml ليس من جرة الخاص بك
- application.properties و yaml من جرة الخاص بك
@PropertySource
على فئة التكوين @- الخاصية بشكل افتراضي (تعيين عبر
SpringApplication.setDefaultProperties()
)
أضف أيضًا property.yml دائمًا ما يتخطى property.properties.
وصف الشروح والتكوينات الرئيسية لـ Spring Boot؟يوفر @SpringBootApplication
3 خصائص:
@EnableAutoConfiguration
- يتيح آلية التكوين التلقائي لـ Spring Boot@ComponentScan
- يمكّن مكون المسح الضوئي في حزمة الفئة حيث يوجد@Configuration
- يسمح لك بالتسجيل الإضافي. الفاصوليا في السياق
فيما يلي شروح رئيسية أخرى:
@EnableConfigurationProperties
- يسمح لك باستخدام @ConfigurationProperties
مع تعليق توضيحي @ConfigurationProperties
@ConfigurationProperties
- يسمح لك بربط الملفات من الملفات مع صناديق
@WebMvcTest
- يستخدم لاختبارات Spring MVC
@SpringBootTest
- يستخدم عندما تحتاج إلى وظائف Spring Boot في الاختبارات
@DataJpaTest
- يستخدم لاختبار مكونات JPA
ما هي الاختلافات بين الحاوية المضمنة والحرب؟الحاوية المدمجة هي الخادم الذي يأتي مع التطبيق النهائي ، في حين أن WAR هو أرشيف يمكن نشره على خادم خارجي.
تعد حاويات Servlet مفيدة لإدارة تطبيقات متعددة على نفس المضيف ، ولكنها ليست مفيدة للغاية لإدارة تطبيق واحد فقط.
مع وجود بيئة سحابية باستخدام تطبيق واحد لكل جهاز افتراضي ، تكون الطريقة المفضلة والأكثر شيوعًا. ترغب الأطر الحديثة في أن تكون أكثر توافقًا مع السحب ، لذا فهي تتحول إلى الحاويات المدمجة.
ما الحاويات المدمجة التي يدعمها Spring؟يدعم Spring Boot Tomcat و Jetty و Undertow.
الافتراضي هو TomCat. من أجل تغيير الحاوية ، ما عليك سوى إضافة التبعية المطلوبة في pom.xml.
ماذا تفعل @ EnableAutoConfiguration؟لأنها تتيح لك استخدام التكوين التلقائي. يحاول التكوين التلقائي في Spring Boot إنشاء وتكوين فاصوليا استنادًا إلى التبعيات في classpath ، من أجل السماح للمطور ببدء العمل بسرعة باستخدام التقنيات المختلفة وإزالة رمز البرفل.
هل يقوم Spring Boot بفحص المكونات؟ أين يبحث عنهم بشكل افتراضي؟نعم ، يتم ذلك إذا كان هناك تعليق توضيحي @SpringBootApplication
يحتوي على تعليق توضيحي @ComponentScanning
.
بشكل افتراضي ، يبحث Spring عن الفاصوليا في نفس الحزمة مثل الفئة المشروحة. يمكن تجاوز هذا عن طريق تحديد الفئات (أو الحزمة) في scanBasePackage
أو scanBasePackage
.
ما هو Spring Boot Starter POM؟ كيف يمكن أن تكون مفيدة؟توفر Starters مجموعة من واصفات التبعية المفيدة التي يمكنك تضمينها في التطبيق الخاص بك. يمكنك الحصول على مصدر واحد للتقنيات الربيعية والتكنولوجيات ذات الصلة دون الحاجة إلى البحث عن واصفات النشر ولصقها.
على سبيل المثال ، إذا كنت ترغب في البدء باستخدام Spring JPA ، فما عليك سوى إضافة تبعية spring-boot-starter-data-jpa إلى مشروعك.
تحتوي البداية على معظم التبعيات التي تحتاجها لتشغيل المشروع ، والعمل بسرعة وثبات ، ودعم مجموعات التبعيات العابرة.
يمكنك التحكم في تسجيل الدخول من خلال Spring Boot؟نعم. افتراضيًا ، سيتم عرض الرسائل ذات الأولويات ERROR و WARN و INFO في التطبيق. لتمكين إخراج مستويات DEBUG أو TRACE ، يجب عليك استخدام --trace
/ - --trace
أو تعيين خصائص الخاصية debug / trace = true.
logging.level.root = WARN logging.level.org.springframework.web = DEBUG logging.level.org.hibernate = ERROR
بشكل افتراضي ، يسجل Sprin Boot فقط إلى وحدة التحكم. إذا كنت ترغب في تسجيل الأحداث إلى ملف ، يجب عليك تعيين خصائص logging.file أو logging.path إلى true (على سبيل المثال ، في application.properties).
تسجيل اللون
في لوحات المفاتيح التي تدعم ANSI ، لتحسين قابلية القراءة ، يمكن تمييز الرسائل ذات المستويات المختلفة بألوان مختلفة. هذه هي الطريقة التي تم تكوينها في ملف الخاصية:
logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss}) {yellow}
إذا كنت تريد الكتابة انتقل إلى ملفات أخرى ، يمكنك أيضًا تكوين هذا (YAML):
logging: path: /var/logs/ file: bookWarn.log level: root: WARN org. springframework: security: DEBUG