Tavaszi Boot Interjú Kérdések

1. Bemutatkozás

Bevezetése óta a Spring Boot kulcsfontosságú szereplő a Spring ökoszisztémában. Ez a projekt az önkonfigurációs képességével sokkal megkönnyíti az életünket.

Ebben az oktatóanyagban bemutatjuk a tavaszi indítással kapcsolatos leggyakoribb kérdéseket, amelyek felmerülhetnek egy állásinterjú során.

2. Kérdések

Q1. Mi az a tavaszi csomagtartó és mi a fő jellemzője?

A Spring Boot lényegében a gyors alkalmazásfejlesztés kerete, amely a Spring Framework tetejére épül. Az automatikus konfigurációval és a beágyazott alkalmazásszerver-támogatással, valamint az átfogó dokumentációval és a közösségi támogatással együtt a Spring Boot az egyik legnépszerűbb technológia a Java ökoszisztémájában.

Íme néhány kiemelkedő jellemző:

  • Kezdők - függőségi leírók, amelyek a releváns függőségeket menet közben is tartalmazzák
  • Automatikus konfigurálás - egy alkalmazás automatikus konfigurálásának módja az osztályútvonalon található függőségek alapján
  • Működtető - gyártásra kész funkciók, például figyelés elérése
  • Biztonság
  • Fakitermelés

Q2. Mi a különbség a tavaszi és a tavaszi csizma között?

A Spring Framework számos olyan funkciót tartalmaz, amelyek megkönnyítik a webalkalmazások fejlesztését. Ezek a szolgáltatások magukba foglalják a függőség-injektálást, az adatkötést, a szempont-orientált programozást, az adatokhoz való hozzáférést és még sok minden mást.

Az évek során a tavasz egyre bonyolultabbá vált, és az ilyen alkalmazáshoz szükséges konfiguráció mennyisége félelmetes lehet. Itt jön jól a Spring Boot - szellősebbé teszi a Spring alkalmazás konfigurálását.

Lényegében, míg a tavasz még vélemény nélküli, A Spring Boot véleményezett képet nyújt a platformról és a könyvtárakról, lehetővé téve számunkra a gyors indítást.

Itt van a Spring Boot két legfontosabb előnye:

  • Az alkalmazások automatikus konfigurálása az osztályterületen talált leletek alapján
  • Biztosítson olyan nem funkcionális jellemzőket, amelyek közösek a gyártási alkalmazásokban, például biztonsági vagy állapotfelméréseket

Kérjük, ellenőrizze a többi oktatóanyagunkat a vanília tavasz és a tavaszi csomagtartó részletes összehasonlításához.

Q3. Hogyan állíthatunk be egy tavaszi indító alkalmazást a Maven-lel?

A Spring Bootot bevonhatjuk egy Maven projektbe, akárcsak bármely más könyvtárat. A legjobb módszer azonban az, hogy örököljön a tavasz-bakancs-induló-szülő projektet, és deklarálja a Spring Boot indítóktól való függőséget. Ezzel a projektünk újrafelhasználhatja a Spring Boot alapértelmezett beállításait.

Öröklődik a tavasz-bakancs-induló-szülő a projekt egyszerű - csak a-t kell megadnunk szülő elem be pom.xml:

 org.springframework.boot spring-boot-starter-parent 2.3.0.FELTÉTEL 

Megtalálhatjuk a legújabb verzióját tavasz-bakancs-induló-szülő a Maven Central-on.

Az indító szülő projekt használata kényelmes, de nem mindig megvalósítható. Például, ha cégünk minden projektet megkövetel, hogy örököljön egy szabványos POM-ból, akkor is profitálhatunk a Spring Boot függőségkezeléséből egy egyedi szülő segítségével.

Q4. Mi az a tavaszi Initializr?

A Spring Initializr egy kényelmes módszer a Spring Boot projekt létrehozására.

Felkereshetjük a Spring Initializr webhelyet, választhatunk egy függőségkezelő eszközt (akár Maven, akár Gradle), egy nyelvet (Java, Kotlin vagy Groovy), csomagolási sémát (Jar vagy War), verziót és függőségeket, és letölthetjük a projektet.

Ez csontváz-projektet hoz létre számunkra és megtakarítja a beállítási időt, hogy koncentrálhassunk az üzleti logika hozzáadására.

Még akkor is, ha az IDE (például az STS vagy az Eclipse with STS plugin) új projektvarázslót használjuk a Spring Boot projekt létrehozásához, a Spring Initializr programot használja a motorháztető alatt.

Q5. Milyen tavaszi indító indítók állnak rendelkezésre odakinn?

Minden induló egyablakos szerepet játszik az összes szükséges tavaszi technológia számára. Ezután az egyéb szükséges függőségeket átmenetileg behúzzák és következetes módon kezelik.

Minden induló a org.springframework.boot csoport és a nevük kezdődik tavaszi-bakancs-indító-. Ez a névminta megkönnyíti az indítók megtalálását, különösen akkor, ha olyan IDE-kkel dolgozik, amelyek támogatják a függőségek név szerinti keresését.

Az írás idején több mint 50 induló áll rendelkezésünkre. A leggyakrabban használtak:

  • rugós-indító indító: magindító, beleértve az automatikus konfigurációs támogatást, a naplózást és a YAML-t
  • spring-boot-starter-aop: indító a szempont-orientált programozáshoz Spring AOP és AspectJ segítségével
  • spring-boot-starter-data-jpa: indító a Spring Data JPA hibernált állapotban történő használatához
  • spring-boot-starter-security: indító a Spring Security használatához
  • rugós-indító-indító teszt: indító a Spring Boot alkalmazások teszteléséhez
  • tavasz-boot-starter-web: indító webes alkalmazások, beleértve a RESTful alkalmazást a Spring MVC segítségével

Az indítók teljes listáját itt találja.

Ha többet szeretne tudni a Spring Boot indítókról, tekintse meg a Intro to Spring Boot Starters cikket.

Q6. Hogyan lehet letiltani egy adott automatikus konfigurációt?

Ha le akarjuk tiltani egy adott automatikus konfigurációt, akkor a kizárni attribútuma @EnableAutoConfiguration annotáció. Például ez a kódrészlet semlegesíti DataSourceAutoConfiguration:

// egyéb megjegyzések @EnableAutoConfiguration (kizárva = DataSourceAutoConfiguration.class) nyilvános osztály MyConfiguration {}

Ha engedélyeztük az automatikus konfigurációt a @SpringBootApplication annotáció - amelynek van @EnableAutoConfiguration meta-annotációként - letilthattuk az automatikus konfigurációt egy azonos nevű attribútummal:

// egyéb megjegyzések @SpringBootApplication (kizárva = DataSourceAutoConfiguration.class) nyilvános osztály MyConfiguration {}

Az automatikus konfigurációt a tavasz.autokonfigurálás.kizár környezeti tulajdonság. Ez a beállítás a alkalmazás.tulajdonságok fájl ugyanazt csinálja, mint korábban:

spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

Q7. Hogyan lehet regisztrálni az egyéni automatikus konfigurációt?

Az automatikus konfigurációs osztály regisztrálásához teljes minősítésű névvel kell rendelkeznünk a EnableAutoConfiguration írja be a META-INF / tavasz.gyárak fájl:

org.springframework.boot.autoconfigure.EnableAutoConfiguration = com.baeldung.autoconfigure.CustomAutoConfiguration

Ha Maven-nel építünk egy projektet, akkor ezt a fájlt a források / META-INF könyvtár, amely az említett helyre kerül a csomag fázis.

Q8. Hogyan lehet megmondani, hogy egy automatikus konfiguráció visszalép, ha egy bab létezik?

Arra használhatjuk az automatikus konfigurációs osztályt, hogy vonuljon vissza, amikor a bab már létezik @ConditionalOnMissingBean annotáció. Ennek a kommentárnak a legszembetűnőbb tulajdonságai a következők:

  • érték: Az ellenőrizendő babfajták
  • név: Az ellenőrizendő bab neve

Amikor egy módszerrel díszítik @Bab, a céltípus alapértelmezés szerint a módszer visszatérési típusa:

@Configuration public class CustomConfiguration {@Bean @ConditionalOnMissingBean public CustomService service () {...}}

Q9. Hogyan telepíthetem a tavaszi indító webalkalmazásokat Jar és War fájlokként?

Hagyományosan egy webalkalmazást WAR fájlként csomagolunk, majd egy külső szerverre telepítünk. Ezzel több alkalmazást rendezhetünk ugyanazon a szerveren. Abban az időben, amikor a CPU és a memória kevés volt, ez nagyszerű módja volt az erőforrások megtakarításának.

A dolgok azonban megváltoztak. A számítógépes hardver most meglehetősen olcsó, és a figyelem a szerver konfigurálására fordult. A szerver konfigurálásakor a telepítés során elkövetett kisebb hiba katasztrofális következményekkel járhat.

Spring ezt a problémát egy plugin biztosításával kezeli, nevezetesen spring-boot-maven-plugin, egy webalkalmazás futtatható JAR-ként történő csomagolásához. Ehhez a bővítményhez csak adjon hozzá egy a-t csatlakoztat elem a pom.xml:

 org.springframework.boot spring-boot-maven-plugin 

Ha ez a bővítmény a helyén van, akkor egy kövér JAR-t kapunk a csomag fázis. Ez a JAR tartalmazza az összes szükséges függőséget, beleértve a beágyazott szervert is. Így már nem kell aggódnunk egy külső szerver konfigurálása miatt.

Ezután ugyanúgy futtathatjuk az alkalmazást, mint egy közönséges futtatható JAR-t.

Figyeljük meg, hogy a csomagolás elem a pom.xml fájlt állítani kell befőttes üveg JAR fájl készítéséhez:

befőttes üveg

Ha nem vesszük fel ezt az elemet, akkor alapértelmezés szerint az is befőttes üveg.

Abban az esetben, ha WAR fájlt akarunk létrehozni, módosítsa a csomagolás elem a háború:

háború

És hagyja a tároló függőségét a csomagolt fájlból:

 org.springframework.boot spring-boot-starter-tomcat biztosított 

A Maven kivégzése után csomag szakaszban lesz egy telepíthető WAR fájlunk.

Q10. Hogyan kell használni a tavaszi indítást a parancssori alkalmazásokhoz?

Mint minden más Java programhoz, a Spring Boot parancssori alkalmazáshoz is rendelkeznie kell a fő- módszer. Ez a módszer belépési pontként szolgál, amely meghívja a SpringApplication # futás módszer az alkalmazás indításához:

@SpringBootApplication nyilvános osztály MyApplication {public static void main (String [] args) {SpringApplication.run (MyApplication.class); // egyéb állítások}}

A SpringApplication osztály ezután felgyújt egy tavaszi tartályt és automatikusan konfigurálja a babot.

Figyelem: át kell adnunk egy konfigurációs osztályt a fuss metódus elsődleges konfigurációs forrásként működni. Megállapodás szerint ez az érv maga a belépési osztály.

Miután felhívta a fuss módszerrel más utasításokat is végrehajthatunk, mint egy szokásos programban.

Q11. Melyek a külső konfiguráció lehetséges forrásai?

A Spring Boot támogatja a külső konfigurációt, lehetővé téve számunkra, hogy ugyanazt az alkalmazást futtassuk különböző környezetekben. A konfigurációs tulajdonságok megadásához használhatunk tulajdonságfájlokat, YAML fájlokat, környezeti változókat, rendszer tulajdonságokat és parancssori opció argumentumokat.

Ezután hozzáférhetünk ezekhez a tulajdonságokhoz a @Érték megjegyzés, egy kötött objektum a @ConfigurationProperties kommentár, vagy a Környezet absztrakció.

Q12. Mit jelent, hogy a tavaszi csizma támogatja a laza kötést?

A Spring Boot nyugodt kötése alkalmazható a konfigurációs tulajdonságok típusbiztos kötésére.

Laza kötéssel, az ingatlan kulcsának nem kell pontosan megegyeznie a tulajdonság nevével. Ilyen környezeti tulajdonság írható camelCase, kebab-case, snake_case vagy nagybetűvel aláhúzással elválasztott szavakkal.

Például, ha egy tulajdonság egy babosztályban a @ConfigurationProperties megjegyzés meg van nevezve myProp, a környezeti tulajdonságok bármelyikéhez köthető: myProp, én-prop, my_prop, vagy MY_PROP.

Q13. Mit van Használt tavaszi csomagtartók?

A Spring Boot Developer Tools vagy a DevTools olyan eszközkészlet, amely megkönnyíti a fejlesztési folyamatot. Ezeknek a fejlesztési időbeli jellemzőknek a felvételéhez csak hozzá kell adnunk egy függőséget a pom.xml fájl:

 org.springframework.boot spring-boot-devtools 

A tavaszi-bakancs-devtools modul automatikusan letiltásra kerül, ha az alkalmazás fut a termelésben. Az archívumok újracsomagolása szintén alapértelmezés szerint kizárja ezt a modult. Ennélfogva ez nem hoz semmiféle rezsit a végtermékünkhöz.

Alapértelmezés szerint a DevTools olyan tulajdonságokat alkalmaz, amelyek alkalmasak egy fejlesztői környezetre. Ezek a tulajdonságok letiltják a sablonok gyorsítótárát, engedélyezik a webcsoport hibakeresési naplózását és így tovább. Ennek eredményeként megvan ez az ésszerű fejlesztési idő konfiguráció, tulajdonságok beállítása nélkül.

A DevTools alkalmazást használó alkalmazások újraindulnak, ha az osztályúton lévő fájl megváltozik. Ez nagyon hasznos funkció a fejlesztésben, mivel gyors visszajelzést ad a módosításokról.

Alapértelmezés szerint a statikus erőforrások, beleértve a nézet sablonokat, nem indítják újra az újraindítást. Ehelyett egy erőforrás-változás elindítja a böngésző frissítését. Figyelem: ez csak akkor fordulhat elő, ha a LiveReload kiterjesztés a böngészőbe van telepítve, hogy kölcsönhatásba lépjen a DevTools által tartalmazott beágyazott LiveReload szerverrel.

A témával kapcsolatos további információkért olvassa el a Spring Boot DevTools áttekintését.

Q14. Hogyan kell írni az integrációs teszteket?

A Spring alkalmazás integrációs tesztjeinek futtatásakor rendelkeznünk kell egy ApplicationContext.

Az életünk megkönnyítése érdekében a Spring Boot egy speciális jegyzetet biztosít a teszteléshez - @SpringBootTest. Ez a feljegyzés létrehoz egy ApplicationContext által jelzett konfigurációs osztályokból osztályok tulajdonság.

Abban az esetben, ha a osztályok attribútum nincs beállítva, a Spring Boot az elsődleges konfigurációs osztályra keres. A keresés a tesztet tartalmazó csomagtól indul, egészen addig, amíg meg nem talál egy osztályt, amellyel jegyzetelt @SpringBootApplication vagy @SpringBootConfiguration.

Részletes útmutatásért tekintse meg a Spring Boot tesztelésével kapcsolatos oktatóanyagunkat.

Q15. Mire szolgál a rugós bakancs működtetője?

Az Actuator lényegében életre hívja a Spring Boot alkalmazásokat azáltal, hogy lehetővé teszi a gyártásra kész funkciókat. Ezek a funkciók lehetővé teszik számunkra az alkalmazások nyomon követését és kezelését, amikor gyártásban futnak.

A Spring Boot Actuator projektbe történő integrálása nagyon egyszerű. Csak annyit kell tennünk, hogy belefoglaljuk a rugós-csomagtartó-indító-működtető indító a pom.xml fájl:

 org.springframework.boot spring-boot-starter-actuator 

A Spring Boot Actuator működési információkat tehet közzé HTTP vagy JMX végpontok használatával. A legtöbb alkalmazás azonban HTTP-re megy, ahol a végpont és a / működtető előtag alkot egy URL elérési utat.

Íme néhány a beépített végpontok közül, amelyeket az Actuator biztosít:

  • env: Kiteszi a környezeti tulajdonságokat
  • Egészség: Az alkalmazás állapotával kapcsolatos információkat mutatja
  • httptrace: Megjeleníti a HTTP nyomkövetési információkat
  • info: Önkényes alkalmazásinformációkat jelenít meg
  • mutatók: Mutató adatok megjelenítése
  • fakitermelők: Megjeleníti és módosítja a naplózók konfigurációját az alkalmazásban
  • leképezések: Megjeleníti az összes listáját @RequestMapping utak

Kérjük, olvassa el a Spring Boot Actuator oktatóanyagunkat a részletes leírásról.

Q16. Melyik a jobb módja a tavaszi indítási projekt konfigurálásának - a tulajdonságok vagy a YAML használatával?

A YAML számos előnyt kínál a tulajdonságfájlokkal szemben, például:

  • Nagyobb egyértelműség és jobb olvashatóság
  • Tökéletes hierarchikus konfigurációs adatokhoz, amelyek szintén jobb, olvashatóbb formátumban vannak ábrázolva
  • Térképek, listák és skalár típusok támogatása
  • Több profilt is tartalmazhat ugyanabba a fájlba

Ennek megírása azonban behúzási szabályai miatt kissé nehéz és hajlamos lehet.

A részletekről és a működő mintákról olvassa el a tavaszi YAML vs Tulajdonságok oktatóanyagunkat.

Q17. Melyek azok az alapvető kommentárok, amelyeket a tavaszi csomagtartó kínál?

Az elsődleges kommentárok, amelyeket a Spring Boot kínál, azokban találhatók org.springframework.boot.autoconfigure és annak alcsomagjai. Itt van néhány alapvető:

  • @EnableAutoConfiguration - hogy a Spring Boot megkeresse az automatikus konfigurációs babokat az osztályán, és automatikusan alkalmazza őket.
  • @SpringBootApplication - a Boot Application fő osztályának jelölésére szolgál. Ez az annotáció egyesül @ Konfiguráció, @EnableAutoConfiguration, és @ComponentScan kommentárok az alapértelmezett attribútumokkal.

A tavaszi indítójegyzetek nagyobb betekintést nyújtanak a témába.

Q18. Hogyan változtathatja meg az alapértelmezett portot a tavaszi indításkor?

A Spring Bootba ágyazott szerver alapértelmezett portját az alábbi módok egyikével módosíthatjuk:

  • tulajdonságfájl segítségével - ezt definiálhatjuk egy alkalmazás.tulajdonságok (vagy alkalmazás.yml) fájlt a tulajdonság segítségével szerver port
  • programszerűen - a legfontosabb @SpringBootApplication osztályban beállíthatjuk a szerver port a SpringApplication példa
  • a parancssor használatával - amikor az alkalmazást jar fájlként futtatja, beállíthatjuk a server.port java parancs argumentumként:
    java -jar -Dserver.port = 8081 myspringproject.jar 

Q19. Mely beágyazott szerverek támogatják a tavaszi rendszerindítást, és hogyan lehet megváltoztatni az alapértelmezettet?

A dátum szerint A tavaszi MVC támogatja a Tomcatot, a mólót és az Undertow-t. A Tomcat az alapértelmezett alkalmazásszerver, amelyet a Spring Boot's támogat web indító.

A Spring WebFlux támogatja a Netty reaktort, a Tomcat-ot, a mólót és az Undertow-t alapértelmezés szerint a Netty reaktort.

Tavasszal az MVC-ben az alapértelmezés megváltoztatásához, mondjuk a Mólóhoz, ki kell zárnunk Tomcat-ot, és be kell vonnunk a Jetty-t a függőségekbe:

 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-móló 

Hasonlóképpen, hogy a WebFlux alapértelmezett értékét UnderTow-ra változtassuk, ki kell zárnunk a Reactor Netty-t, és be kell vonni az UnderTow-t a függőségekbe.

„A beágyazott szervlet tartalmának összehasonlítása a Spring Boot-ban” további részleteket tartalmaz a különböző beágyazott szerverekről, amelyeket a Spring MVC-vel használhatunk.

Q20. Miért van szükségünk tavaszi profilokra?

A vállalati alkalmazások fejlesztésekor általában több környezettel is foglalkozunk, mint például a Dev, a QA és a Prod. Ezen környezetek konfigurációs tulajdonságai eltérnek.

Például lehet, hogy beágyazott H2 adatbázist használunk a Dev számára, de a Prod rendelkezhet a saját Oracle vagy a DB2 szolgáltatással. Még akkor is, ha a DBMS minden környezetben azonos, az URL-ek határozottan eltérőek lennének.

Hogy ez könnyű és tiszta legyen, A Spring rendelkezik profilokkal, amelyek segítenek az egyes környezetek konfigurációjának elkülönítésében. Annak érdekében, hogy a programozott fenntartás helyett a tulajdonságok külön fájlokban tarthatók, például application-dev. tulajdonságait és alkalmazás-prod. tulajdonságait . Az alapértelmezett alkalmazás.tulajdons az éppen aktív profilra mutat a gombbal tavaszi. profilok. aktív hogy a helyes konfigurációt felvegye.

A tavaszi profilok átfogó képet adnak erről a témáról.

3. Következtetés

Ez az oktatóanyag áttekinti a Spring Boot legfontosabb kérdéseit, amelyekkel egy technikai interjú során találkozhat. Reméljük, hogy segítenek abban, hogy álmai munkáját el tudja érni.