Otázky týkajúce sa rozhovoru s jarným spustením

1. Úvod

Od svojho uvedenia je Spring Boot kľúčovým hráčom v jarnom ekosystéme. Tento projekt nám uľahčuje život vďaka možnosti automatickej konfigurácie.

V tomto tutoriáli sa budeme venovať niektorým z najbežnejších otázok týkajúcich sa Spring Boot, ktoré sa môžu vyskytnúť počas pracovného pohovoru.

2. Otázky

Q1. Čo je Spring Boot a aké sú jeho hlavné vlastnosti?

Spring Boot je v podstate rámec pre rýchly vývoj aplikácií postavený na vrchole Spring Framework. Vďaka svojej automatickej konfigurácii a podpore zabudovaných aplikačných serverov v kombinácii s rozsiahlou dokumentáciou a podporou komunity, ktorú využíva, je Spring Boot jednou z najpopulárnejších technológií v ekosystéme Java k dnešnému dňu.

Tu je niekoľko hlavných funkcií:

  • Štartéry - sada deskriptorov závislostí na zahrnutie relevantných závislostí na cestách
  • Automatická konfigurácia - spôsob automatickej konfigurácie aplikácie na základe závislostí prítomných na ceste ku triede
  • Aktuátor - na získanie funkcií pripravených na výrobu, ako je napríklad monitorovanie
  • Bezpečnosť
  • Protokolovanie

Q2. Aké sú rozdiely medzi jarou a jarnou topánkou?

Jarný rámec poskytuje niekoľko funkcií, ktoré uľahčujú vývoj webových aplikácií. Medzi tieto funkcie patrí vkladanie závislostí, viazanie údajov, programovanie zamerané na jednotlivé aspekty, prístup k údajom a mnoho ďalších.

V priebehu rokov sa jar čoraz viac komplikovala a množstvo konfigurácie, ktorú si takáto aplikácia vyžaduje, môže byť zastrašujúce. Tu sa hodí Spring Boot - konfigurácia jarnej aplikácie je preto hračkou.

V podstate, zatiaľ čo jar je bez podpory, Spring Boot zaujme názorný pohľad na platformu a knižnice a umožní nám tak rýchlo začať.

Tu sú dve z najdôležitejších výhod, ktoré Spring Boot prináša:

  • Automaticky konfigurujte aplikácie na základe artefaktov, ktoré nájde v triede
  • Poskytujte nefunkčné funkcie bežné pre aplikácie vo výrobe, ako sú napríklad bezpečnostné alebo zdravotné kontroly

Skontrolujte prosím jeden z našich ďalších tutoriálov, kde nájdete podrobné porovnanie medzi vanilkovou pružinou a jarnou topánkou.

Q3. Ako môžeme nastaviť aplikáciu Spring Boot s programom Maven?

Spring Boot môžeme zahrnúť do projektu Maven rovnako ako do ktorejkoľvek inej knižnice. Najlepší spôsob je však dediť z pružina-štartér-štartér-rodič projektovať a deklarovať závislosti na spúšťačoch Spring Boot. Toto umožní nášmu projektu znovu použiť predvolené nastavenie Spring Boot.

Zdedenie pružina-štartér-štartér-rodič projekt je priamy - stačí uviesť a rodič prvok v pom.xml:

 org.springframework.boot spring-boot-starter-parent 2.3.0.RELEASE 

Nájdeme najnovšiu verziu servera pružina-štartér-štartér-rodič na Maven Central.

Používanie projektu štartujúceho rodiča je pohodlné, ale nie vždy uskutočniteľné. Napríklad, ak naša spoločnosť vyžaduje, aby všetky projekty dedili zo štandardného POM, stále môžeme ťažiť zo správy závislostí Spring Boot pomocou vlastného rodiča.

Q4. Čo je jarný Initializr?

Spring Initializr je pohodlný spôsob, ako vytvoriť projekt Spring Boot.

Môžeme ísť na stránku Spring Initializr, zvoliť nástroj na správu závislostí (buď Maven alebo Gradle), jazyk (Java, Kotlin alebo Groovy), schému balenia (Jar alebo War), verziu a závislosti a stiahnuť si projekt.

Toto vytvára pre nás kostrový projekt a šetrí čas potrebný na nastavenie, aby sme sa mohli sústrediť na pridanie obchodnej logiky.

Aj keď na vytvorenie projektu Spring Boot použijeme nášho sprievodcu novým IDE (napríklad STS alebo Eclipse with STS plugin), použije pod kapotou Spring Initializr.

Q5. Aké jarné štartéry sú k dispozícii?

Každý štartér hrá úlohu jednotného kontaktného miesta pre všetky jarné technológie, ktoré potrebujeme. Ďalšie požadované závislosti sa potom prechodne načítajú a spravujú konzistentným spôsobom.

Všetci štartujúci sú pod org.springframework.boot skupina a ich mená začínajú na štartér pružiny. Tento vzor pomenovania uľahčuje hľadanie začiatočníkov, najmä pri práci s IDE, ktoré podporujú vyhľadávanie závislostí podľa názvu.

V čase písania tohto článku je k dispozícii viac ako 50 štartujúcich. Najčastejšie sa používajú:

  • štartér pružiny: jadrový štartér vrátane podpory automatickej konfigurácie, protokolovania a YAML
  • spring-boot-starter-aop: štartér pre aspektovo orientované programovanie s Spring AOP a AspectJ
  • spring-boot-starter-data-jpa: štartér pre použitie Spring Data JPA s režimom dlhodobého spánku
  • zabezpečenie štartéra pružiny-štartéra: štartér pre použitie Spring Security
  • test štartéra pružiny-boot: štartér na testovanie aplikácií Spring Boot
  • web jar-topánka-štartér: štartér pre tvorbu webov vrátane RESTful aplikácií pomocou Spring MVC

Celý zoznam začiatočníkov nájdete v tomto úložisku.

Ak sa chcete dozvedieť viac informácií o štartovacích prvkoch Spring Boot, pozrite si úvod do časti Spring Boot Starters.

Q6. Ako zakázať konkrétnu automatickú konfiguráciu?

Ak chceme zakázať konkrétnu automatickú konfiguráciu, môžeme ju označiť pomocou vylúčiť atribút @EnableAutoConfiguration anotácia. Tento útržok kódu napríklad neutralizuje DataSourceAutoConfiguration:

// ďalšie anotácie @EnableAutoConfiguration (vylúčiť = DataSourceAutoConfiguration.class) verejná trieda MyConfiguration {}

Ak sme povolili automatickú konfiguráciu pomocou @SpringBootApplication anotácia - ktorá má @EnableAutoConfiguration ako metaanotáciu - automatickú konfiguráciu by sme mohli zakázať pomocou atribútu s rovnakým názvom:

// ďalšie anotácie @SpringBootApplication (vylúčiť = DataSourceAutoConfiguration.class) verejná trieda MyConfiguration {}

Automatickú konfiguráciu môžeme tiež deaktivovať pomocou pružina.autokonfigurácia.vylúčiť environmentálne vlastníctvo. Toto nastavenie v application.properties súbor robí to isté ako predtým:

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

Q7. Ako zaregistrovať vlastnú automatickú konfiguráciu?

Aby sme mohli zaregistrovať triedu automatickej konfigurácie, musíme mať v zozname uvedené jej úplný názov EnableAutoConfiguration kľúč v META-INF / spring.factories spis:

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

Ak staviame projekt s Mavenom, tento súbor by mal byť umiestnený v zdroje / META-INF adresár, ktorý skončí na uvedenom mieste počas balíček fáza.

Q8. Ako rozpoznať automatickú konfiguráciu, aby ustúpila, keď fazuľa existuje?

Ak chceme dať triede automatickej konfigurácie pokyn, aby vycúvala, keď už fazuľa existuje, môžeme použiť @ConditionalOnMissingBean anotácia. Najvýraznejšie atribúty tejto anotácie sú:

  • hodnota: Druhy fazule, ktoré sa majú skontrolovať
  • názov: Názvy fazule, ktoré sa majú skontrolovať

Pri umiestnení na spôsob zdobený @Bean, cieľový typ má predvolený návratový typ metódy:

@Configuration verejná trieda CustomConfiguration {@Bean @ConditionalOnMissingBean verejná služba CustomService () {...}}

Q9. Ako nasadiť jarné bootovacie webové aplikácie ako súbory Jar a War?

Webovú aplikáciu tradične zabalíme ako súbor WAR a potom ju nasadíme na externý server. To nám umožňuje usporiadať viac aplikácií na rovnakom serveri. Počas obdobia, keď bolo CPU a pamäte málo, to bol skvelý spôsob, ako šetriť zdroje.

Veci sa však zmenili. Počítačový hardvér je dnes pomerne lacný a pozornosť sa sústredila na konfiguráciu servera. Malá chyba v konfigurácii servera počas nasadenia môže mať katastrofické následky.

Jar tento problém rieši poskytnutím doplnku, konkrétne spring-boot-maven-plugin, aby bola webová aplikácia zabalená ako spustiteľný súbor JAR. Ak chcete zahrnúť tento doplnok, stačí pridať a zapojiť prvok do pom.xml:

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

S týmto pluginom dostaneme tučný JAR po vykonaní balíček fáza. Tento súbor JAR obsahuje všetky potrebné závislosti vrátane zabudovaného servera. Preto si už viac nemusíme robiť starosti s konfiguráciou externého servera.

Aplikáciu potom môžeme spustiť rovnako ako bežný spustiteľný súbor JAR.

Všimnite si, že balenie prvok v pom.xml súbor musí byť nastavený na jar vytvoriť súbor JAR:

jar

Ak tento prvok nezahrnieme, použije sa tiež predvolene hodnota jar.

V prípade, že chceme vytvoriť súbor WAR, zmeňte balenie prvok do vojna:

vojna

A nechajte závislosť kontajnera mimo zabaleného súboru:

 org.springframework.boot poskytnutý spring-boot-starter-tomcat 

Po vykonaní Maven balíček fázy, budeme mať nasaditeľný súbor WAR.

Q10. Ako používať Spring Boot pre aplikácie príkazového riadku?

Rovnako ako akýkoľvek iný program Java, aj aplikácia príkazového riadku Spring Boot musí mať znak hlavný metóda. Táto metóda slúži ako vstupný bod, ktorý vyvoláva SpringApplication # spustiť spôsob zavedenia aplikácie:

@SpringBootApplication verejná trieda MyApplication {public static void main (String [] args) {SpringApplication.run (MyApplication.class); // ďalšie výroky}}

The SpringApplication trieda potom vystrelí jarný kontajner a automaticky nakonfiguruje fazuľa.

Všimnite si, že musíme odovzdať konfiguračnú triedu do bežať metóda funguje ako primárny zdroj konfigurácie. Podľa konvencie je týmto argumentom samotná vstupná trieda.

Po zavolaní na bežať metódou môžeme vykonávať ďalšie príkazy ako v bežnom programe.

Q11. Aké sú možné zdroje externej konfigurácie?

Spring Boot poskytuje podporu pre externú konfiguráciu, čo nám umožňuje spúšťať rovnakú aplikáciu v rôznych prostrediach. Na určenie vlastností konfigurácie môžeme použiť súbory vlastností, súbory YAML, premenné prostredia, vlastnosti systému a argumenty volieb príkazového riadku.

Potom môžeme získať prístup k týmto vlastnostiam pomocou @Hodnota anotácia, viazaný objekt cez @ConfigurationProperties anotácia alebo Životné prostredie abstrakcia.

Q12. Čo to znamená, že jarná topánka podporuje uvoľnené viazanie?

Uvoľnená väzba v Spring Boot sa dá použiť na typovo bezpečnú väzbu konfiguračných vlastností.

S uvoľneným viazaním, kľúčom nehnuteľnosti nemusí byť presná zhoda názvu nehnuteľnosti. Takáto vlastnosť prostredia môže byť napísaná v camelCase, kebab-case, snake_case alebo veľkými písmenami so slovami oddelenými podčiarkovníkmi.

Napríklad ak je vlastnosť v triede fazule s @ConfigurationProperties anotácia je pomenovaná myProp, môže byť viazaný na ktorúkoľvek z týchto vlastností prostredia: myProp, môj-prop, my_propalebo MY_PROP.

Q13. Čo je Používajú sa jarné bootovacie nástroje?

Spring Boot Developer Tools alebo DevTools je sada nástrojov, ktoré uľahčujú vývojový proces. Ak chcete zahrnúť tieto funkcie v čase vývoja, musíme do servera pridať závislosť pom.xml spis:

 org.springframework.boot spring-boot-devtools 

The spring-boot-devtools modul sa automaticky deaktivuje, ak je aplikácia spustená vo výrobe. Prebaľovanie archívov tiež predvolene vylučuje tento modul. Preto to neprináša režijné náklady na náš konečný produkt.

DevTools predvolene aplikuje vlastnosti vhodné pre vývojové prostredie. Tieto vlastnosti zakazujú ukladanie šablón do medzipamäte, umožňujú protokolovanie ladenia pre webovú skupinu atď. Vo výsledku máme túto rozumnú konfiguráciu v čase vývoja bez nastavovania akýchkoľvek vlastností.

Aplikácie používajúce DevTools sa reštartujú vždy, keď sa zmení súbor v triednej ceste. Toto je veľmi užitočná funkcia pri vývoji, pretože poskytuje rýchlu spätnú väzbu k úpravám.

Statické prostriedky vrátane šablón zobrazenia predvolene nespúšťajú reštart. Namiesto toho zmena zdroja spustí obnovenie prehľadávača. Všimnite si, že k tomu môže dôjsť, iba ak je v prehliadači nainštalované rozšírenie LiveReload na interakciu so zabudovaným serverom LiveReload, ktorý obsahuje DevTools.

Ďalšie informácie o tejto téme nájdete v prehľade Spring Boot DevTools.

Q14. Ako písať integračné testy?

Pri spustení integračných testov pre jarnú aplikáciu musíme mať ApplicationContext.

Aby sme nám uľahčili život, Spring Boot poskytuje špeciálnu anotáciu pre testovanie - @SpringBootTest. Táto anotácia vytvára ApplicationContext z konfiguračných tried označených triedy atribút.

V prípade, že triedy atribút nie je nastavený, Spring Boot vyhľadá primárnu konfiguračnú triedu. Vyhľadávanie sa začína od balíka obsahujúceho test, až kým nenájde triedu s poznámkami @SpringBootApplication alebo @SpringBootConfiguration.

Podrobné pokyny nájdete v našom výučbe testovania v Spring Boot.

Q15. Na čo sa používa pružinový spúšťací mechanizmus?

Actuator v podstate oživuje aplikácie Spring Boot tým, že umožňuje funkcie pripravené na výrobu. Tieto funkcie nám umožňujú monitorovať a spravovať aplikácie, keď bežia v produkcii.

Integrácia Spring Boot Actuator do projektu je veľmi jednoduchá. Všetko, čo musíme urobiť, je zahrnúť aktivátor pružiny-štartéra-štartéra štartér v pom.xml spis:

 org.springframework.boot spring-boot-starter-aktuator 

Spring Boot Actuator môže vystaviť prevádzkové informácie pomocou koncových bodov HTTP alebo JMX. Väčšina aplikácií však používa protokol HTTP, kde je identita koncového bodu a / aktuátor predpona tvorí cestu URL.

Tu sú niektoré z najbežnejších zabudovaných koncových bodov, ktoré Actuator poskytuje:

  • env: Vystavuje vlastnosti prostredia
  • zdravie: Zobrazuje informácie o zdraví aplikácie
  • httptrace: Zobrazí informácie o sledovaní HTTP
  • Info: Zobrazí ľubovoľné informácie o aplikácii
  • metriky: Zobrazuje informácie o metrikách
  • drevorubači: Zobrazuje a upravuje konfiguráciu protokolovacích nástrojov v aplikácii
  • mapovania: Zobrazí zoznam všetkých @RequestMapping cesty

Podrobné zhrnutie nájdete v našom návode Spring Boot Actuator.

Q16. Čo je lepší spôsob konfigurácie projektu Spring Boot - pomocou vlastností alebo YAML?

YAML ponúka oproti súborom vlastností mnoho výhod, ako napríklad:

  • Väčšia jasnosť a lepšia čitateľnosť
  • Perfektné pre hierarchické konfiguračné údaje, ktoré sú tiež zastúpené v lepšom a čitateľnejšom formáte
  • Podpora máp, zoznamov a skalárnych typov
  • Môže obsahovať niekoľko profilov v jednom súbore

Jeho napísanie však môže byť kvôli jeho pravidlám odsadenia trochu náročné a náchylné na chyby.

Podrobnosti a pracovné vzorky nájdete v našom výučbe Spring YAML vs Properties.

Q17. Aké sú základné anotácie, ktoré ponúka Spring Boot?

Primárne anotácie, ktoré Spring Boot ponúka, sú obsiahnuté v jeho org.springframework.boot.autoconfigure a jeho čiastkových balíkov. Tu je niekoľko základných:

  • @EnableAutoConfiguration - aby Spring Boot vyhľadal fazóny s automatickou konfiguráciou na svojej triednej ceste a automaticky ich použil.
  • @SpringBootApplication - používa sa na označenie hlavnej triedy bootovacej aplikácie. Táto anotácia sa spája @ Konfigurácia, @EnableAutoConfigurationa @ComponentScan anotácie s ich predvolenými atribútmi.

Spring Boot Annotations ponúka viac vhľadu do predmetu.

Q18. Ako môžete zmeniť predvolený port v jarnom bootovaní?

Predvolený port servera vloženého do Spring Boot môžeme zmeniť jedným z týchto spôsobov:

  • pomocou súboru vlastností - môžeme to definovať v application.properties (alebo aplikácia.yml) súbor používajúci vlastnosť Port servera
  • programovo - v našom hlavnom @SpringBootApplication triedy, môžeme nastaviť Port servera na SpringApplication inštancia
  • pomocou príkazového riadku - pri spustení aplikácie ako súboru jar môžeme server.port nastaviť ako argument príkazu java:
    java -jar -Dserver.port = 8081 myspringproject.jar 

Q19. Ktoré vstavané servery podporuje Spring Boot a ako zmeniť predvolené nastavenie?

K dátumu Spring MVC podporuje Tomcat, Jetty a Undertow. Tomcat je predvolený aplikačný server podporovaný programom Spring Boot web štartér.

Jarný WebFlux podporuje Reactor Netty, Tomcat, Jetty a Undertow s Reactor Netty ako predvoleným.

Na jar MVC, aby sme zmenili predvolené, povedzme na Jetty, musíme vylúčiť Tomcat a zahrnúť Jetty do závislostí:

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

Podobne, aby sme zmenili predvolené nastavenie vo WebFlux na UnderTow, musíme vylúčiť Reactor Netty a zahrnúť UnderTow do závislostí.

„Porovnanie vloženého servletu obsahuje v Spring Boot“ obsahuje viac podrobností o rôznych zabudovaných serveroch, ktoré môžeme použiť s Spring MVC.

Q20. Prečo potrebujeme jarné profily?

Pri vývoji aplikácií pre podniky sa zvyčajne zaoberáme viacerými prostrediami, ako sú Dev, QA a Prod. Vlastnosti konfigurácie pre tieto prostredia sú odlišné.

Napríklad by sme mohli používať zabudovanú databázu H2 pre Dev, ale Prod by mohol mať proprietárny Oracle alebo DB2. Aj keď je systém DBMS rovnaký v rôznych prostrediach, adresy URL by boli určite odlišné.

Aby to bolo ľahké a čisté, Jar poskytuje profily, ktoré pomáhajú oddeliť konfiguráciu pre každé prostredie. Takže namiesto toho, aby to bolo programovo udržiavané, je možné vlastnosti uchovávať v samostatných súboroch, ako je napr application-dev. vlastnosti a application-prod. vlastnosti . Predvolená hodnota aplikácia.vlastníctvos ukazuje na aktuálne aktívny profil pomocou jar. profilov. aktívny aby sa zachytila ​​správna konfigurácia.

Jarné profily poskytujú komplexný pohľad na túto tému.

3. Záver

Tento tutoriál prešiel niektorými z najdôležitejších otázok o Spring Boot, s ktorými sa môžete stretnúť počas technického pohovoru. Dúfame, že vám pomôžu pri vysnívanej práci.


$config[zx-auto] not found$config[zx-overlay] not found