Om Spring Boot
Den Java-baserede Spring Boot er et open source web framework, der bruges til oprettelse af mikroservice- og standalone-applikationer. Spring Boot forkorter længden af en kode og gør det nemt at køre Spring-applikationen, mens Spring-rammen opnår fleksibilitet og infrastrukturstøtte via dependency injection.
Spring Boot konfigurerer automatisk Spring-applikationen, giver standalone-kvalitet uden appimplementering med webservere, og er også selvbestemmende i forhold til hvilke pakker og standardindstillinger der skal installeres for dependencies.
Spring Boot udvikler-statistik
Der er i øjeblikket en stor efterspørgsel efter Spring Boot i erhvervet på grund af den fremragende, store skalerbarhed og tilgængelighed.
Indtil nu er mere end 37.000 commits blevet uploaded til GitHub. Et commit er et snapshot af et repository (central placering af data), der viser alle de seneste kildekodeændringer direkte i repositoryet.
Interview med en Spring Boot-udvikler
Nyttige tips til et interview forud for en screening
Før en Spring Boot-udvikler ansættes, skal de eksperter der gennemfører interviewet altid forberede flere korte spørgsmål for at finde ud af om kandidaten opfylder alle de kriterier, der er nødvendige i en virksomhed. De væsentlige spørgsmål stilles først og derefter følger en gruppe af tekniske og praktiske spørgsmål i næste fase.
Vores specialist i erhvervelse af talenter, Maria Kyryliuk, understreger:
"Udviklere, der taler passionere om deres jo, har gode soft skills, er respektfulde under interviewet og sikrer at de er synlige på kameraet og at det virker, samt er opmærksomme på samtalen og har gode engelskkundskaber, er alle gode tegn. Og selvfølgelig, hvis jeg føler at der er et godt samtaleflow og gensidig forståelse bliver dét det endelige indtryk der runder interviewet af."
De vigtigste tekniske færdigheder, du skal lede efter hos en Spring Boot-udvikler
En god Spring Boot-udvikler bør have kendskab til flere sæt tekniske færdigheder for at kunne udføre og fuldføre de opgaver, der er tildelt ham.
Med hensyn til arkitektur og softwaredesign bør det perfekte match kende nogle få arkitektoniske mønstre/patterns såsom:
- Peer-to-peer pattern
- Broker pattern
- Master-slave pattern
- Model-view-controller pattern
- Layered pattern
- Event-bus pattern
- Client-server pattern
- Blackboard pattern
- Pipe-filter pattern
- Interpreter pattern
Det næste er OOP, eller objektorienteret proggrammering, og de grundlæggende begreber er indkapsling, abstraktion, arv, polymorphi, brugerdefinerede types, prædefinerede types og drift.
Der er en anden vigtig kompetence, som er et must, og det er viden om micro services og deres anvendelse. Java-udviklerne skal opdatere deres færdigheder og viden og følge tendenserne inden for opbygning af micro services i stedet for monolitiske applikationer. Hertil er et godt kendskab til Docker Container en nødvendig forudsætning.
Docker har vist sig at være nyttigt ikke blot til at skabe, men også til at kompilere microserviceapplikationer, og det i forskellige miljøer. Til gengæld skal udviklerne kende DURS-principperne godt, og de fungerer som grundlag for micro service. Der er et par grundlæggende principper i DURS: Failure isolering, domænedrevet design, decentralisering, kontinuerlig delivery og DevOps.
Den erfarne Spring Book-udvikler skal også kende den korrekte brug af microservice-arkitekturområder. Disse vigtige nøgleområder er autorisation, godkendelse, autentificering, netværkssikkerhed, datasikkerhed og implementering.
Hvad angår micro service patterns, så er de nedenfor nævnte patterns foretrukket og praktisere af de erfarne udviklere.
- Delivery pipelines
- GraphQL APIs
- Secure by Design
- Docker Rootless Mode
- HTTPS skal anvendes til sikring
- Handling Sensitive information
- Dependencies skal skannes
- Undgå sikkerhedsangreb
- RSocket Endpoints
- Time-based Security
- Cloud- and Cluster-specifik sikkerhedspraksis
- Adgangs- og identitets-tokens
- Scan Docker og Kubernetes-konfiguration
Udvikleren skal også kende til de bedste praksisser for microservice, som er anført nedenfor:
- Microservices målrettet mod brugernes behov
- Microservices API Design Practices
- DevSecOps tilgang
- Forsvar in depth pattern
- Managing Sessions
- Automatiske sikkerhedsopdateringer
- Centraliseret software til sikkerhed og overvågning
- Aggregering af application logs
- Distribueret sporing
DevOps værktøjer
Et andet stort plus for udvikleren er viden og færdigheder om DevOps. Kendskab til et eller flere af de værktøjer, der er anført nedenfor er en god færdighed.
Udviklere skal oprette og udvikle passende unittests til den specifikke kode. Til unittest af Java-kode anvendes JUnit altid. JUnit har også et overordnet framwork, Xunit. Inden for et projekt sikres dækningen af unittests gennem udførelse og implementering af unit test suites. Unit testing udføres manuelt, men også med automatiserede metoder.
Der findes et princip, der hedder “først tests, så kodning”, og JUnit er baseret på netop dette. JUnit hjælper ganske enkelt med at skabe bedre effektivitet og kvalitet i udviklerens arbejde. Funktionerne i dette open source software framwork er:
- Annotations
- Assertions
- Test Runners
- Automatic test suite execution
- Test suites
- Test progress
- Fixtures
En typisk unit test indeholder en testcase til kontrol af programmets funktionalitet eller en metode i klassen. Med input og resultat i mente oprettes testcasen for at kontrollere både input og resultater. Kontrollen af inputforudsætningerne er fuldført.
Kontrollen af resultaterne efter testen er også afsluttet. For hver testcase kan du udpege en enkelt positiv og negativ test i overensstemmelse hermed. Sådanne tests kan integreres med værktøjer som Ant, Maven og Eclipse og kan også integreres med IDE'er.
Hvad adskiller en fantastisk Spring Boot-udvikler fra en god udvikler?
Det perfekte match er en fantastisk Spring Boot-udvikler, som har en god forståelse og et stort kendskab til Java-webstandarder som filter og servlet. Et andet plus er, hvis udvikleren kender til messaging queues (ActiveMQ/RabbitMQ/Kafka), docker, microservice-patterns og ved, hvordan en cache-server fungerer (Redis). Udvikleren skal også være i stand til at skrive en ren kode og anvende TDD-praksis godt.
Sådan hjælper Proxify dig med at finde de bedste Spring Boot-talenter
Hvis du selv tager dig af ansættelses- og talentmatching-processen, kan hele processen med at matche et talent blive vanskelig uden hjælp. Denne proces kan tage meget tid, hvis den skal gennemføres fra start til slut, da den omfatter mere end blot at offentliggøre en annonce eller planlægge interviews med kandidater og ansøgere.
Processen vil kræve en masse tid og ressourcer til onboarding og endda uddannelse af kandidater, hvor det er passende, og flere andre processer undervejs. Og forestil dig også alle de omkostninger og konsekvenser der følger, hvis du vælger den forkerte kandidat i løbet af ansættelsesprocessen og kandidatudvælgelsen.
Proxifys specialister og eksperter i erhvervelse af talenter kan tilbyde dig deres hjælp gennem en grundig og tidsbesparende proces med at at vælge det rette talent til dig, fordi vi fremhæver top-niveau udviklere, der kan begynde at arbejde næsten øjeblikkeligt, i løbet af få dage efter at være blevet udvalgt.
Vores proces med at matche det rette talent består af:
- Selvvurderingsopgaver, der tildeles de kandidater der er udvalgt på listen.
- Et forhåndsopkkald, som rekrutteringsfolk planlægger med kadidater der har gennemført en indledende opgave med succes. I denne fase fokuserer vi på at teste tekniske og ikke-tekniske færdigheder, engelskkundskaber samt kandidatens tidligere og nuværende erfaring.
- Det næste skridt i processen er en præcis, teknisk opgave gennem en vurderingstest.
- Til sidst afslutter vi processen med et teknisk interview, som organiseres og ledes af en Spring Boot-udvikler med stor erfaring.
Vi gør vores ypperste for at sørge for at forkorte den tid, der er nødvendig for at ansætte et perfekt match, i modsætning til de fleste bureauer eller rekrutteringstjenester, der kan strække processen ud i lang tid. Dette skyldes primært, at Spring Boot frameworket stiger i popularitet år for år-især hos Proxify, hvor efterspørgslen og behovet for dette er steget markant i hele det sidste årti.
Væsentlige krav til og vurdering af en Spring Boot-udvikler
Vi tænkte, at de bedste personer til at besvare spørgsmålet om, hvordan man finder de væsentlige faktorer, der gør en Spring Boot-udvikler til en god ansat, er vores egne tekniske interviewere og udviklere. Derfor interviewede vi Koray Gecici, Besfort Shehu og Ramazan Sakin og bad dem om at give os deres personlige tips om de væsentlige faktorer, når vi skal vurdere Spring Boot-udvikleres anciennitet, erfaring og tekniske viden.
Ifølge Ramazan Sakin, softwareingeniør og Spring Boot-udvikler, bør en egnet kandidat kende til følgende:
"VCS-konceptet samt Git-anvendelse og desuden have erfaring med CI/CD og værktøjer som Bamboo, Jenkins, GitLab m.fl."
Ramazan Sakin
Derudover tilføjer softwareingeniør og Spring Boot-udvikler Besfort Shehu også:
"Den rigtige pasform bør kende til Starter POM'er, Autokonfiguration, Spring Boot CLI samt Spring Boot Initializer."
Besfort Shehu
Computeringeniør og Spring Boot-udvikler Koray Gecici tilføjede også:
"For at vurdere ekspertisen er fokus på at spørge, hvad udvikleren ved om dependency injection, bean instantiation af en IOC-container og IOC generelt, betydningen af en controller, service, repository og entity-pakker, autokonfiguration, code coverage og branch coverage, samt at skelne mellem integrationstest og enhedstest."
Koray Gecici
Fordele ved Spring Boot
Brugen af Spring Boot giver mange fordele og bekræfter den altomfattende praktiske anvendelighed, der gør arbejdsprocessen enkel og funktionel for ingeniører og udviklere, og det gælder også fra mange aspekter.
En af fordelene ved Spring Boot er brugen og afhængigheden af Java, som ellers måske er det mest populære programmeringssprog, men som også giver en testopsætning, der er standard og beregnet til Java-baserede applikationer.
En anden væsentlig fordel er autokonfiguration, og det er eksperterne enige om. Det betyder at Spring-applikationen let kan konfigureres på en enkel måde og i overensstemmelse med de JAR dependencies, som udvikleren har valgt.
Hvilke fordele nævnte Spring Boot-udviklerne?
Vi spurgte vores udviklere hos Proxify om deres erfaringer med Spring Boot, og hvad de oplevede som de mest nyttige og praktiske funktioner og fordele. Med udgangspunkt i deres ekspertise har vi samlet de værdifulde oplysninger nedenfor.
Sakin understregede:
- Intet behov for XML-konfiguration
- Reduceret mængde af koder som standardkode
- Embedding af Tomcat, Jetty og Undertow
- Mindre tid er ndvendig til udvikling via en RAD platform (Rapid Application Developement)
Desuden tilfølger Gecici:
- Enkel, praktisk og nem start og opsætning
- Forenklet forvaltning af dependencies
Og Shehu uddybede også yderligere:
- Intet behov for impementering af WAR filer
- Et rigt og bredt brugerfællesskab og adgang til gratis læringskilder og -materialer
- Oprettelse af standalone applikationer
Derudover er der andre Spring Boot fordele, der bør nævnes:
- Styring af remote access/upåklagelig admin support
- Medfølgende plugins til arbejde med databaser
- HTTP server embedding
Mulige interviewspørgsmål (+ deres svar)
- Forklar forskellen mellem Spring Boot og Spring.
Forventet svar: Spring er et open source framework, der understøtter Java-apps, mens Spring Boot er et microservice framework, en udvidelse af Spring, der er tilføjet over Spring frameworket. Vi kan konkludere, at Spring indeholder flere frameworks (eller "lag"), og at Spring Boot er et af dem. Sidstnævnte har dog vist sig lettere at arbejde med og fjerner de ellers nødvendige boilerplate-konfigurationer (når man færdiggør en Spring-app-opsætning).
- Hvad er betydningen af Spring Boot JPA?
Forventet svar: JPA er en kort betegnelse for Java Persistence API, en grænseflade, og den bruges til relationel datahåndtering i Java-apps. For at arbejde med JPA skal vi også medtage ORM (Object Relation Mapping) - disse to er forbundet, fordi ORM gør det muligt for os at få databasetabeller som følge af konverteringen af Java-objekter. Generelt er JPA fremragende til små processer i en forespørgsel og forkorter boilerplate-koden.
- Hvad er Spring Boot ”profiles"?
Forventet svar: Når dele af en app-konfiguration er grupperet sammen, kalder vi dem profiler. Profilerne repræsenterer en gruppe af konfigurationsindstillinger, og denne gruppering hjælper os med at indstille en præcis, nøjagtig konfiguration i det respektive, passende miljø.
- Hvad kan du sige om "Initializr"?
Forventet svar: Hvis vi har brug for at generere en struktur for et Spring Boot-projekt, bruger vi det webbaserede værktøj Spring Initializr. Dette værktøj hjælper udviklere med at vælge den bedste og mest passende projektkonfiguration og hjælper med at bruge et udvideligt API på den bedst mulige måde. Vi kan se initializeren som en slags katalysator eller generator for strukturen af et Spring-projekt.
- Hvad er "thymeleaf"?
Forventet svar: Den server-side engine, det Java-baserede bibliotek, som en udvikler bruger til at skabe webapps, hedder Thymeleaf. Dette bibliotek hjælper os med at oprette og behandle tekst, CSS, XML, HTML og JavaScript. Det, der gør dette bibliotek nyttigt og godt at arbejde med, er, at det er ret omfattende, det forkorter den samlede udviklingstid og ikke kræver backend til prototyping af skabeloner.
- Hvad kan du sige om Spring YAML-konfiguration?
Forventet svar: Først skal vi definere og forklare YAML og dets sammenhæng med Spring Boot bagefter. YAML (Yet Another Markup Language) repræsenterer et klart læsbart, fleksibelt sprog til datastyring, og det kan endda være en passende erstatning for nogle sprog, som f.eks. JSON. En stor fordel ved YAML er, at du kan mappe det utrolig nemt til native datas. Andre fordele ved YAML er den lette læsbarhed, så det er et perfekt aktiv til konfigurationsarbejde, samt at det gør det muligt at automatisere processer nemt. I forbindelse med Spring Boot ville YAML være ideelt at bruge, når vi arbejder med hierarkikonfigurationer og vi skal specificere dem pænt.
- Hvad kan du fortælle om Spring Boot 'main class'?
Forventet svar: Spring Boot main class, indeholder en hovedmetode. Denne klasse ses oftest i Java-apps. I forbindelse med Spring Boot driver main class SpringApplicationContext frem, fordi klassen indeholder metoden public static void main()
Hvis vi har flere erklærede main classes i en app, kan vi med Spring Boot nemt finde og definere en main class i konfigurationen.
- Definer IoC-containeren og dens kontekst i Spring Boot.
Forventet svar: Dependency injection er utroligt effektivt og forenklet, når det sker automatisk, og denne form for automatisk proces udføres med programmeringsprincippet IoC-container. Der er ikke længere nogen manuel objektstyring, hvis du bruger IoC med Spring Boot, og alle objekter med deres dependencies vil blive konfigureret og samlet perfekt.
- Hvad er Spring Boot Devtools?
Forventet svar: For det første er Devtools et sæt værktøjer eller et modul, der hjælper udvikleren med at teste og fejlsøge koder, og generelt forenkler deres arbejde. Mere præcist i denne sammenhæng er Spring Boot Devtools en forbedring, der er frigivet af Spring, og som indgår som en del af Spring Boot 1.3.
Disse Spring Boot Devtools giver dig store forbedringer i arbejdet med Spring Boot, f.eks:
- Automatic Restart giver mulighed for en simpel genindlæsning af Java-klasser, efterfulgt af en serverkonfiguration.
- Remote Update and Restart - Med dette kan vi nemt genstarte og opdatere en app eksternt ved at overvåge alle filændringer i en classpath og straks sende dem til en fjernserver. I sidste ende genstartes denne server.
- Property Defaults, for nem deaktivering af caching og simpel opdatering af sider uden at skulle genstarte appen - alt sammen med hjælp fra og implementering af Thymeleaf og dets 'spring.thymeleaf.cache'
- Remote Debug Tunneling - Tunneling af JDWP (Java Debug Wire Protocol) direkte til appen via HTTP er nu utrolig let.
- LiveReload er den medfølgende server i Devtools, og den gør det muligt for appen at begynde at opdatere browseren på en automatisk måde. Denne browser-opfriskning eller "auto-opfriskning" vil ske ved alle ændringer, vi foretager undervejs.
For at opsummere kan du forvente, at Spring Boot-appen genstarter hurtigt, når du foretager kodeændringer.
- Hvad er @RequestMapping? Og @GetMapping?
Forventet svar: Den type annotation, der giver os oplysninger om routing, kaldes @RequestMapping og bruges mest på metode- eller klassetrin i controller-klassen. Så hvis du bruger @RequestMapping, skal du forvente, at du får en global anmodningssti på controllerklassen.
I modsætning til annotationen på klasseniveau, der er nævnt ovenfor, er @GetMapping den sammensatte annotation, der forbinder metoder. Denne annotation finder alle HTTP GET-forespørgsler og mapper dem nemt til bestemte handlingsmetoder alt efter behovet.