Spring er en Java-ramme, der bruger en container til at oprette og administrere de forskellige komponenter i en applikation. Beholderen (ofte kaldet Spring-applikationskonteksten) forbinder de forskellige komponenter i en applikation ved hjælp af afhængighedsinjektion (DI) designmønster. DI giver dig mulighed for at bruge et objekt i en afhængig klasse uden at oprette en ny forekomst af det i den afhængige klasse.
Så i stedet for at tillade hver komponent at skabe nye forekomster af dem, de er afhængige af, opretter og vedligeholder Springs container en forekomst af hver af de komponenter, den er vært for. Denne beholder injicerer derefter en forekomst af en komponent i alle de andre komponenter, der har brug for det.
Udforsker forårets kerneegenskaber
Spring frameworket har omkring 20 velorganiserede moduler, der spiller en integreret rolle i dets evne til at skabe og administrere applikationer. Baseret på de primære funktioner i disse moduler kan du gruppere dem i fem kategorier:
- Kernebeholder
- Dataadgang/Integration
- Web
- Aspektorienteret programmering og instrumentering
- Prøve
Spring Container
Spring bruger en beholder til at skabe og administrere forskellige komponenter (som det kalder bønner) i en applikation. Beholderen er tilgængelig via Springs ApplicationContext-grænseflade, som giver dig mulighed for at instansiere, konfigurere og samle objekter (eller bønner). Springs container kan udføre sin funktion ved hjælp af konfigurationsmetadata.
Disse konfigurationsmetadata kan have flere forskellige former, men dens typiske form er XML. Springs beholder består udover bønner også af en kerne, kontekst og et udtryksmodul.
Spring Data Access/Integration
Dataadgang/integrationsaspektet af springrammeværket består af flere undermoduler: JDBC, ORM, OXM, JMS og transaktion. Disse moduler arbejder sammen for at administrere alle data, som din applikation bruger.
Forårs Web
Webfunktionen i Spring-applikationen giver web-orienteret integration til din applikation. Ud over web-orienteret integration tilbyder Spring et webservlet-modul. Webservlet-modulet er ansvarlig for Spring’s implementering af model-view-controller (MVC)..
Spring Aspect-Oriented Programming (AOP)
Springs AOP-ramme er en anden af dens nøglekomponenter. Selvom AOP-rammen ikke er afgørende for Springs containerfunktion, komplementerer den containeren ved at være en egnet middleware-løsning. En af AOP-rammernes nøglefunktioner er, at den leverer deklarative virksomhedstjenester til din applikation, nemlig administration af erklæringstransaktioner.
Deklarativ transaktionsstyring er en ønskværdig tilgang til softwareudvikling, fordi den har minimal indvirkning på applikationskoden.
Forårsprøve
Foråret lægger stor vægt på applikationstestning. Dets testmodul understøtter integrationstest og enhedstest ved hjælp af JUnit eller TestNG.
Oprettelse af en forårsapplikation
Der er flere måder at skabe kedelpladen til en ny Spring-applikation. De forskellige tilgange omfatter:
- Fra webapplikationen (eller Spring Initializr) på Springs officielle hjemmeside.
- Manuel oprettelse af en projektmappestruktur og opbygningsspecifikationer.
- Med Spring Tool Suite.
- Fra kommandolinjen med Spring Boot kommandolinjegrænseflade.
- Med Eclipse IDE.
- Med IntelliJ IDEA IDE.
Den mest populære tilgang er Spring Initializr:
Som du kan se på billedet ovenfor, skal du træffe flere beslutninger. Den første er den type projekt, du vil initialisere. Spring giver tre muligheder: Gradle for Groovy, Gradle for Kotlin eller Maven. Denne prøveapplikation vil bruge et Maven-projekt.
De andre muligheder, du skal vælge, er sproget (Java), den version af Spring Boot, du vil bruge, og projektets metadata. Spring har allerede nogle dummy-data i sine fem felter, der vil hjælpe dig med at oprette en prøveapplikation. Du skal dog opdatere disse felter med projektspecifikke data, da disse metadata vil beskrive din Spring-applikation inklusive Spring-bønner og deres metoder.
Dernæst skal du vælge den emballage, du vil have dine filer i (krukke eller krig). Derefter kan du vælge den version af Java, du har på din enhed. Den endelige beslutning, du skal træffe, er den type afhængigheder, du ønsker for din ansøgning.
Spring giver flere afhængigheder, som du kan bruge til at tilføje egenskaber til din applikation. For at tilføje en ny afhængighed til din applikation skal du blot klikke på knappen Tilføj afhængigheder til højre for Spring Initializr. Denne handling vil generere følgende overlejring på din skærm:
For denne prøveapplikation er den eneste afhængighed, du skal bruge, Spring Web. Denne afhængighed giver dig mulighed for at bygge webapplikationer ved hjælp af MVC-arkitekturen. Når du har valgt alle de afhængigheder, du ønsker at bruge i din applikation, skal du fortsætte med at generere et klik. Dette vil downloade projektets kedelplade for dig.
Nu har du et Spring Boot-projekt (som er et af Springs biblioteker). Det sidste trin er at importere projektet til din foretrukne IDE. Dit forårsprojekt vil have følgende projektstruktur:
Dette er en normal Maven-projektstruktur, og der er flere vigtige filer, som du skal blive fortrolig med.
- Pom.xml: Dette indeholder Spring-applikationens konfigurationsdata.
- OnlineShopaholicsApplication.java: Dette er Spring Boot-hovedklassen, som udfører applikationen.
- OnlineShopaholicsApplicationTest.java: Dette er en JUnit test klasse, der sikrer, at Spring-applikationskonteksten (eller containeren) indlæses korrekt.
Kørsel af en forårsapplikation
Springs bootstrap-klasse, som i dette tilfælde er OnlineShopaholicsApplication-klassen, har følgende indledende kode:
pakke com.onlineshopaholics;
importereorg.springramme.støvle.ForårAnsøgning;
importereorg.springramme.støvle.autoconfigure.SpringBootApplication;
@SpringBootApplication
offentligklasseOnlineShopaholics-applikation{
offentligstatiskugyldigvigtigste(String[] args){
SpringApplication.run (OnlineShopaholicsApplication.klasse, args);
}
}
Et af de vigtigste aspekter af koden ovenfor er @SpringBootApplication annotation, som er en sammensat annotation, der giver din applikation adgang til funktionerne i tre andre annoteringer:
- @EnableAutoconfiguration: Denne annotation aktiverer Spring Boot automatisk konfiguration. Dette betyder, at den fortæller Spring boot at konfigurere enhver komponent, som den mener, din applikation skal fungere.
- @ComponentScan: Denne annotation giver dig mulighed for at aktivere komponentscanning. Denne funktion er vigtig, den giver Spring mulighed for automatisk at opdage og registrere andre kommenterede komponenter til brug af Spring-applikationskonteksten (eller containeren).
- @SpringBootConfiguration: Dette er en specialiseret form for @Configureation-annotationen, som giver dig mulighed for at registrere bønner (eller objekter) i Spring-applikationskonteksten.
Det andet vigtige aspekt af koden ovenfor er hoved() metode, udfører den din applikation. Når applikationen kører nu, starter den simpelthen serveren. Så hvis du vil tilføje mere funktionalitet til applikationen, skal du opdatere koden:
pakke com.onlineshopaholics;
importereorg.springramme.støvle.ForårAnsøgning;
importereorg.springramme.støvle.autoconfigure.SpringBootApplication;
importereorg.springramme.web.binde.annotation.GetMapping;
importereorg.springramme.web.binde.annotation.RequestParam;
importereorg.springramme.web.binde.annotation.RestController;@SpringBootApplication
@RestController
offentligklasseOnlineShopaholics-applikation{
offentligstatiskugyldigvigtigste(String[] args){
SpringApplication.run (OnlineShopaholicsApplication.klasse, args);
}
@GetMapping("/kunde")
offentlig Snor Velkommen(@RequestParam (værdi = "navn", defaultValue = "Kunde") Snor navn) {
Vend tilbageSnor.format("Velkommen %s!", navn);
}
}
Spring Boot-applikationen har nu tre nye annotationer:
- @RestController: Denne annotation markerer klassen som en controller, så hver metode i klassen ovenfor (bortset fra main()) vil returnere et domæneobjekt i stedet for en visning.
- @GetMapping: Denne annotation knytter HTTP GET-anmodninger til specifikke header-metoder. Så hver gang du opretter en anmodning om "/customer" i browseren, vil Welcome()-metoden håndtere anmodningen ved at returnere en strengværdi.
- @RequestParam: Denne annotation angiver, at en metodeparameter skal være bundet til en webanmodningsparameter.
Med den opdaterede kode din Spring OnlineShopaholics-applikation har nu en kundeside, som du kan se i din browser. Udførelse af applikationen vil starte serveren og producere output i konsollen.
Der er en masse vigtig information i outputtet. Den fortæller dig, at serveren kører, den fortæller dig, hvor lang tid initialiseringsprocessen tog, og den fortæller dig, hvilken port applikationen kører på (8080, som standard). Derfor, hvis du navigerer til http://localhost: 8080/kunde du vil se følgende output i din browser:
Nu kan du designe din applikationsvisning
En anden vigtig fil i projektstrukturen, som du måske bemærker, er skabeloner folder. Ideelt set OnlineShopaholics-applikation klasse skal fungere som en controller, der håndterer anmodninger om forskellige visninger. Derfor bør controllerklassen i en komplet applikation ikke indeholde den tekst, der vises i visningen af dens anmodning.
I stedet skal du oprette skabelonfiler ved hjælp af HTML og placere dem i skabelonmappen i din Spring-applikation.