Jste-li vývojář v prostředí Java Spring Boot a blíží se vám pohovor, je pochopitelné, že si nejste jisti, jaké otázky můžete očekávat. Právě proto jsme tu my, abychom vám pomohli!
Tento článek vám poskytne dostatečnou přípravu. Seznámí vás s několika často kladenými dotazy a ukáže, jak na ně reagovat. Tímto způsobem vás potencionální zaměstnavatelé mohou lépe otestovat.
Personalisté používají strategicky volené otázky týkající se Java Spring Boot, aby ověřili úroveň dovedností uchazečů. Proto je klíčové, abyste se na tyto otázky připravili a věděli, jak na ně správně reagovat.
Než se pustíme do samotných otázek a odpovědí, shrneme si, co vlastně Spring Boot je a jak je užitečný pro vývojáře v jazyce Java.
Co je Java Spring Boot?
Tento rámec pro Javu byl vytvořen klíčovým týmem v roce 2014. Spring Boot, jako open-source framework, umožňuje efektivní vývoj nezávislých aplikací, které jsou vhodné pro produkční nasazení a mohou běžet na Java Virtual Machine (JVM).
Java vývojáři si ho oblíbili pro vývoj webových aplikací a mikroslužeb díky rychlému a snadnému procesu nastavení a bezpečné konfiguraci.
Snadné nastavení a konfigurace aplikací založených na Springu v Spring Boot je umožněno třemi klíčovými funkcemi:
- Automatická konfigurace – tedy automatické nastavení Spring aplikace.
- Spring Boot přináší doporučený přístup k výchozím nastavením konfigurace a balíčkům, které by měly být nainstalovány pro potřebné závislosti. Tento přístup urychluje nastavení projektů.
- Spring Boot vám dovoluje spustit aplikaci nezávisle, bez nutnosti webového serveru.
Jak je Spring Boot užitečný pro Java vývojáře?
Vývojáři v Javě pracující se Spring Boot mají usnadněnou práci díky automatické konfiguraci všech komponent nutných pro vývoj produkční Spring aplikace. To zkracuje dobu vývoje a zvyšuje efektivitu.
Spring Boot se také snadno integruje s ekosystémem Spring, který zahrnuje Spring JDBC, Spring Data, Spring Security a Spring ORM.
Java vývojáři mohou Spring Boot propojit s různými databázemi, jako jsou Oracle, MySQL, PostgreSQL a MongoDB.
Mezi další užitečné funkce patří flexibilní konfigurace s XML konfiguracemi, Java Beans a databázovými transakcemi.
Nyní, když máte základní představu o Spring Boot, pojďme se podívat na některé z častých otázek a odpovědí, které vám pomohou se na pohovor lépe připravit.
Otázky a odpovědi na pohovor Spring Boot
Jaké jsou některé funkce Spring Boot?
Mezi populární funkce patří:
- Spring Boot CLI poskytuje Groovy pro psaní Spring Boot aplikací, čímž se vyhýbáme standardnímu kódu.
- Spring Boot poskytuje logování a bezpečnostní funkce, které pomáhají chránit vaši aplikaci před potenciálními hrozbami.
- Automatická konfigurace relevantních komponent pro váš projekt minimalizuje riziko zbytečných souborů WAR.
- Starter Initializer nastaví výchozí strukturu projektu, což eliminuje nutnost manuálního nastavování.
- Funkce Spring Boot Actuator nabízí přehledy a metriky během běhu aplikace.
- Starter Dependency agreguje často používané závislosti pro specifické funkce.
Co jsou Spring Boot Starters?
Spouštěče Spring Boot jsou deskriptory závislostí, které zahrnují sady poskytovatelů pro správu závislostí aplikací. Poskytují rámec s automatickým řešením závislostí, což usnadňuje a urychluje vývoj.
Co je aktuátor v Spring Boot a jaké jsou jeho výhody?
Aktuátor je funkce Spring Boot, která umožňuje monitorovat vnitřní fungování aplikace během jejího běhu.
Například při ladění můžete aktuátor použít k analýze protokolů, které umožňují přístup k využití procesoru a identifikaci komponent.
Kromě toho aktuátor poskytuje snadný přístup k produkčním REST koncovým bodům, které sledují a spravují informace a také získávají data z webu.
Co je Thymeleaf a jak se používá?
Thymeleaf je šablonovací systém pro Javu na straně serveru. Vytváří přirozené šablony pro webové aplikace Spring i HTML5 Java.
Spring Boot automaticky konfiguruje Thymeleaf pomocí závislosti spring-boot-starter-thymeleaf v souboru pom.xml pro generování dynamického webového obsahu.
Pro to, aby Spring Boot mohl číst a vykreslovat Thymeleaf šablony nebo HTML soubory, umisťujte je do adresáře src/main/resources/templates.
Thymeleaf analyzuje soubor index.html a nahradí dynamické hodnoty skutečnými hodnotami, které předáváte z kontrolerové třídy.
Zpráva se pak zobrazí ve webovém prohlížeči po spuštění Spring Boot aplikace.
org.springframework.boot spring-boot-starter-thymeleaf
Popište postup vytvoření Spring Boot projektu pomocí Spring Initializer.
Spring Initializr, webový nástroj Spring, umožňuje vytvořit Spring Boot projekt v několika krocích zadáním detailů projektu.
- Přejděte na Spring Initializr a vyplňte požadovaná pole.
- Kliknutím na „Generovat“ stáhnete projekt.
- Rozbalte stažený projekt ze ZIP souboru a otevřete ho ve vašem IDE. V IDE přejděte na Soubor -> Nový -> Projekt ze stávajících zdrojů -> Spring-boot-app a vyberte soubor pom.xml. Importujte změny, aby se projekt synchronizoval. Nezapomeňte v souboru application.properties upravit server.port na server.port=7000.
- Nyní spusťte aplikaci z src -> main -> java -> com.gfg.Spring.boot.app.
Co je JPA v Spring Boot?
Jde o specifikaci v Javě, která používá Object-Relation Mapping (ORM) ke správě relačních dat a umožňuje přístup k datům mezi Java objekty nebo třídami a relační databází aplikace.
JPA používá Java Persistent Query Language (JPQL), objektově orientovaný dotazovací jazyk, který je nezávislý na platformě.
JPA umožňuje zpracování dotazů a transakcí s objekty proti databázi pomocí Entity Manager API.
Co je automatická konfigurace ve Spring Boot?
Automatická konfigurace se snaží zautomatizovat konfiguraci Spring Boot aplikace pomocí JAR závislostí, které do aplikace přidáte.
V závislosti na dostupných závislostech na classpath aplikace, automatická konfigurace deklaruje objekty modulu specifické pro Spring, včetně JPA a Spring Security.
Co jsou jarní anotace?
Jarní anotace jsou metadata, která nabízejí informace o fragmentu kódu a přidávají do něj další data. Anotace jsou často spojovány s komponentami kódu, jako jsou třídy a metody.
Anotace přímo neovlivňují funkčnost programu ani následný běh zkompilovaného kódu. Jejich syntaxe začíná symbolem @.
Spring Boot poskytuje šest hlavních typů anotací:
- Základní anotace Spring
- Anotace Spring Data
- Anotace Spring Beans
- Webové anotace Spring
- Anotace Spring pro plánování
- Anotace Spring Boot
Co znamená Spring Data REST?
Spring Data REST zpřístupňuje prostředky v RESTful rozhraní na základě Spring Data Resources, s minimálním množstvím kódu.
Následující příklad používá metodu POST pro požadavek obsahu s URL http://localhost/example a hlavičkou Content-Type: application/json.
Obsah požadavku:
{
"name": "Jimmy",
"Gender": "Male",
"Age": 23
}
Obsah odpovědi:
{
"name": "Jimmy",
"Gender": "Male",
"Age": 23
"_links": {
"self": {
"href": "http://localhost:8080/example/1"
},
"person": {
"href": "http://localhost:8080/example/1"
}
}
}
Jde o rozsáhlou sadu předdefinovaných nástrojů, které usnadňují vývoj a šetří čas tím, že jsou aplikovány na příslušná vývojová prostředí.
Pokaždé, když změníte kód v Spring Boot aplikaci, funkce Spring Boot DevTools se automaticky restartuje. Nemusíte tedy aplikaci restartovat ručně po každé změně.
Co je Spring Data?
Spring Data se snaží vývojářům poskytnout snadný přístup k technologiím pro přístup k datům, jako jsou relační a nerelační data a cloudové datové služby, při zachování vlastností základního úložiště dat.
Jak automatické konfiguraci říct, aby ustoupila, pokud existuje bean?
Použijete anotaci @ConditionalOnMissingBean, která má atributy name a value.
- Atribut value ukládá typ bean, který má být zkontrolován.
- Atribut name určuje název bean, který má být zkontrolován.
Jak získat data z databáze ve Spring Boot?
Pomocí následujících kroků můžeme přistupovat k datům z MySQL databáze do naší Spring Boot aplikace.
Krok 1: Vytvořte databázi v MySQL pomocí příkazu create DATABASE person.
Krok 2: V databázi vytvořte tabulku:
CREATE TABLE person(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(255));
Krok 3: Vytvořte Spring Boot aplikaci a přidejte do ní JDBC, MySQL a požadované webové závislosti.
Krok 4: Nakonfigurujte databázi v souboru application.properties, jak je uvedeno níže.
spring.datasource.url=jdbc:mysql://localhost:3306/personDetails spring.datasource.username=example123 spring.datasource.password=example123 spring.jpa.hibernate.ddl-auto=create-drop
Krok 5: Dále zpracujeme požadavky v kontrolerové třídě:
package com.person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class JdbcController {
@Autowired
JdbcTemplate jdbc;
@RequestMapping("/save")
public String index(){
jdbc.execute("insert into person (name)values(Trial)");
return "Name entered Successfully";
}
}
Nakonec spusťte aplikaci a zkontrolujte položky v databázi, abyste viděli, k jakým datům jste přistoupili.
Proč potřebujeme Spring profily?
Spring profily umožňují oddělit konfiguraci aplikace pro různé části a používat je pro specifický vývoj.
Spring profily šetří vývojářům úsilí při správě externích konfigurací specifických pro prostředí. Bez nich by to bylo náročnější.
Také by bylo obtížné udržovat synchronizaci a bylo by potřeba psát několik továrních komponent, které by používaly určité potřebné věci v závislosti na specifických parametrech prostředí.
Můžeme změnit port vestavěného serveru Tomcat v Spring Boot?
Ano, můžeme.
To se provádí manipulací se souborem application.properties, do kterého přidáte vlastnost server.port a přiřadíte jí port dle vlastního výběru. Spring Boot automaticky načte soubor vlastností aplikace a aplikuje požadované konfigurace.
Například můžete změnit server.port z výchozího 8080 na server.port=8081.
Jak nakonfigurovat Log4j pro protokolování?
Log4j nakonfigurujeme pro protokolování pomocí těchto kroků:
- Vytvořte Java projekt, klikněte pravým tlačítkem na projekt a vyberte MyEclipse -> File -> New -> Java Project, pojmenujte projekt a klikněte na Dokončit.
- Dále klikněte pravým tlačítkem na název projektu a vyberte Build Path -> Configure Build Path. Tento krok přidá soubor log4j.
- Přejděte do Libraries a klikněte na tlačítko Add External JARs, z rozbalovací nabídky vyberte soubor log4j a klepněte na OK.
- Vytvořte nový Java soubor log4j.properties, klikněte na Dokončit a přidejte tento soubor do Classpath.
- Klikněte na Advanced v Classpath, vyberte Add Folders a klikněte na OK.
- Vyhledejte soubor log4j.properties, klikněte na OK a spusťte projekt.
- Zkontrolujte výstup v konzoli.
[main] DEBUG Example – Hello this is a debug message [main] INFO Example – Hello this is an info message
Co je IoC kontejner?
IoC (Inversion of Control) kontejner je základní kontejner Springu, který automaticky implementuje vkládání závislostí. Vytváří instanci třídy aplikace a je zodpovědný za konfiguraci objektů a sestavení potřebných závislostí.
Také řídí životní cyklus objektu od jeho vytvoření až po zničení.
IoC provádí tyto úkoly pomocí konfigurace metadat v Java kódu, XML a Java anotací.
Kontejner se nazývá Inversion of Control, protože řídí Java objekty a jejich životní cykly. Tato úloha by jinak ležela na vývojáři.
Vysvětlete, jak vytvořit Spring Boot aplikaci pomocí Mavenu
Proces zahrnuje několik kroků.
Krok 1: Vyberte typ projektu.
Krok 2: Pojmenujte a nakonfigurujte svůj projekt a klikněte na Dokončit.
Krok 3: Nakonfigurujeme soubor pom.xml projektu Maven, aby se stal Spring Boot projektem.
soubor pom.xml:
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.javatpoint</groupId> <artifactId>spring-boot-example</artifactId> <version>0.0.1-SNAPS<name>JavaTpoint Spring Boot Example</name> </project>
Konfigurace zahrnuje přidání rodiče k Maven projektu. Tím se projekt stane podřízeným nadřazenému projektu.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
Krok 4: Dále přidejte webovou závislost spring-boot-starter-web do souboru pom.xml.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Krok 5: Přidejte Java verzi projektu.
<properties>
<java.version>1.8</java.version>
</properties>
Krok 6: Všimněte si, že po každém přidání závislosti musíte aktualizovat Maven projekt.
Krok 7: Umožněte spuštění Maven projektu vytvořením Java třídy v balíčku src/main/java.
Krok 8: Zavolejte metodu statického spuštění třídy Spring Application.
Krok 9: Nakonec spusťte třídu jako Java aplikaci.
Jaké jsou výhody Spring Boot oproti Spring?
- Bootstrapping systému Spring Boot, který kompiluje zdrojový kód pomocí spouštěcího inicializátoru, šetří místo a urychluje načítání aplikace.
- Na rozdíl od Spring, Spring Boot umožňuje správu závislostí po přidání spring-boot závislostí bez závislosti na nadřazeném POM (Parent Object Model) nebo XML souboru.
- Spring Boot také umožňuje vývojářům používat anotace nebo konfiguraci XML bez nutnosti používat konfiguraci XML.
- Vývojáři preferují Spring Boot pro snížené množství standardního kódu potřebného k nastavení aplikace. Spring Boot obsahuje databázi v paměti a vestavěný server Tomcat, což snižuje standardní kód. Spring naopak vyžaduje více standardního kódu.
- Spring Boot nepotřebuje soubory WAR (Web Application Resource) a může se spoléhat na JAR (Java Archive), která má menší a jednodušší strukturu, což je pro uživatele a vývojáře výhodnější.
- Spring Boot automaticky vkládá servery jako Tomcat a Jetty, takže vývojář nemusí manuálně nastavovat server, jak je tomu u Springu.
Stránkování rozděluje data do sekcí, aby se ušetřily zdroje. Obsahuje dvě pole, velikost stránky a číslo stránky.
Proces zahrnuje několik kroků:
Krok 1: Počáteční nastavení. Entitu budeme nazývat Person jako doménovou třídu.
@Entity
public class Person {
@Id
private long id;
private String name;
}
Krok 2: Vytvoření úložiště. PersonRepository rozšiřuje PagingAndSortingRepository, abychom měli k dispozici metody findAll(Pageable pageable) a findAll(Sort sort) pro stránkování a řazení.
public interface PersonRepository extends PagingAndSortingRepository<Person, Integer> {
List<Product> findAllByPrice(double price, Pageable pageable);
}
Krok 3: Stránkování. Vytvoříme objekt PageRequest. Předáme číslo stránky a požadovanou velikost stránky, což implementuje rozhraní Pageable.
Pageable firstPageWithTwoElements = PageRequest.of(0,2); Pageable secondPageWithThreeElements = PageRequest.of(1,3);
Předáme tento objekt PageRequest metodě úložiště jako parametr.
Page<Person> allProducts = personRepository.findAllByPrice(findPageWithTwoElements); List<Items> allTwoDollarItems = itemsRepository.findAllByPrice(2, secondPageThreeElements)
Ve výchozím stavu metoda findAll(Pageable pageable) vrátí objekt Page<T>.
Vysvětlete, jak zaregistrovat vlastní automatickou konfiguraci
Do souboru META-INF/spring.factories uveďte plně kvalifikovaný název klíče @EnableAutoConfiguration. Tento krok zaregistruje třídu automatické konfigurace.
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.baeldung.autoconfigure.CustomAutoConfiguration
Při vytváření projektu pomocí Maven je potřeba umístit soubor do adresáře resources/META-INF.
Co je bootstrapping v Spring Boot?
Bootstrapping je proces spouštění logiky v Spring Boot aplikaci při jejím startu.
Boot initializr kompiluje zdrojový kód v Spring Boot. Tento proces šetří místo v zařízení a urychluje načítání aplikace.
Závěrečné myšlenky 👨💻
Tento článek se zaměřil na některé otázky, které se vás personalisté s největší pravděpodobností zeptají na pohovoru o Spring Boot. Poskytli jsme také odpovědi, které vám pomohou s jistotou uspět. Doufáme, že získáte práci svých snů!
Možná se budete chtít podívat i na relevantní tipy z otázek kladených během pohovorů na pozice Java vývojářů.
Hodně štěstí! 🙂