Miért válassza a tavaszt Java keretrendszerként?

1. Áttekintés

Ebben a cikkben áttekintjük a Spring, mint az egyik legnépszerűbb Java-keret egyik fő értékajánlatát.

Ennél is fontosabb, hogy megpróbáljuk megérteni, hogy a tavasz miért a választott keretünk. A tavasz és az azt alkotó részek részleteit korábbi oktatóanyagaink széles körben taglalták. Ezért kihagyjuk a bevezető „hogyan” részeket, és többnyire a „miért” -re koncentrálunk.

2. Miért érdemes bármilyen keretet használni?

Mielőtt elkezdenénk a vita tárgyát, különös tekintettel a tavaszról, értsük meg először, miért is kell egyáltalán felhasználnunk bármilyen keretet.

A olyan általános célú programozási nyelv, mint a Java, képes sokféle alkalmazás támogatására. Nem beszélve arról, hogy a Java-on minden nap aktívan dolgoznak és fejlesztenek.

Sőt, számtalan nyílt forráskódú és saját könyvtár áll rendelkezésre a Java támogatására ebben a tekintetben.

Akkor mégis miért van szükségünk keretrendszerre? Őszintén szólva nem feltétlenül szükséges keretet használni egy feladat végrehajtásához. De gyakran ajánlatos egyet használni, több okból is:

  • Segít nekünk inkább a fő feladatra összpontosítson, mint a kazánra társul hozzá
  • Évnyi bölcsességet hoz össze tervezési minták formájában
  • Segít betartani az iparági és szabályozási előírásokat
  • Csökkenti az alkalmazás teljes tulajdonlási költségét

Éppen itt kapartuk meg a felszínt, és el kell mondanunk, hogy az előnyöket nehéz figyelmen kívül hagyni. De ez nem lehet minden pozitív, tehát mi a fogás:

  • Arra kényszerít minket kérelmet írjon meghatározott módon
  • Kötődik a nyelv és a könyvtárak meghatározott verziójához
  • Hozzáadódik az alkalmazás erőforrás-lábnyomához

Őszintén szólva a szoftverfejlesztésben nincsenek ezüst golyók, és a keretrendszerek biztosan nem jelentenek kivételt ez alól. Tehát azt, hogy melyik keretet vagy egyiket sem kell a kontextusból vezérelni.

Remélhetőleg a cikk végére jobb helyzetben leszünk, hogy meghozzuk ezt a döntést a Java Java-ban.

3. A tavaszi ökoszisztéma rövid áttekintése

Mielőtt elkezdenénk a tavaszi keret minőségi értékelését, nézzük meg közelebbről, hogy néz ki a tavaszi ökoszisztéma.

A tavasz valahol 2003-ban jött létre abban az időben, amikor a Java Enterprise Edition gyorsan fejlődött, és a vállalati alkalmazás fejlesztése izgalmas, de mégis unalmas volt!

A tavasz a Java inverziója (IoC) tárolójaként indult. A tavaszt még mindig leginkább hozzá kapcsoljuk, és valójában ez képezi a keret és a tetején kidolgozott egyéb projektek magját.

3.1. Tavaszi keret

A tavaszi keret modulokra van osztva, ami nagyon egyszerűvé teszi az egyes alkalmazásokban való részek szerinti kiválasztást és kiválasztást:

  • Core: Olyan alapvető szolgáltatásokat nyújt, mint a DI (Dependency Injection), a nemzetközivé válás, az érvényesítés és az AOP (Aspect Oriented Programming)
  • Adathozzáférés: Támogatja az adatokhoz való hozzáférést a JTA (Java Transaction API), a JPA (Java Persistence API) és a JDBC (Java Database Connectivity) keresztül.
  • Web: Támogatja a Servlet API-t (Spring MVC) és a közelmúltban a Reactive API-t (Spring WebFlux), valamint támogatja a WebSockets, a STOMP és a WebClient
  • Integráció: Támogatja az Enterprise Java integrációját a JMS (Java Message Service), a JMX (Java Management Extension) és az RMI (Remote Method Invocation) révén.
  • Tesztelés: Széles támogatás az egység- és integrációs teszteléshez a Mock Objects, Test Fixtures, Context Management és Caching segítségével

3.2. Tavaszi projektek

De ami sokkal értékesebbé teszi a tavaszt egy erős ökoszisztéma, amely az évek során körülötte nőtt, és amely továbbra is aktívan fejlődik. Ezek tavaszi projektként vannak felépítve, amelyeket a tavaszi keret tetején dolgoznak ki.

Bár a tavaszi projektek listája hosszú és folyamatosan változik, néhányat érdemes megemlíteni:

  • Boot: Rendelkezünk egy nagy véleményű, de kibővíthető sablonnal, amellyel különféle projekteket készíthetünk Spring alapján, szinte pillanatok alatt. Nagyon megkönnyíti az önálló Spring alkalmazások létrehozását beágyazott Tomcat vagy hasonló tárolóval.
  • Felhő: Támogatást nyújt a közös elosztott rendszerminták, például a szolgáltatáskeresés, a megszakító és az API-átjáró, egyszerű fejlesztéséhez. Segít csökkenteni az ilyen kazánminták helyi, távoli vagy akár felügyelt platformokon történő telepítésének erőfeszítéseit.
  • Biztonság: Robusztus mechanizmust biztosít a Spring-en alapuló projektek hitelesítésének és engedélyezésének fejlesztésére, testreszabható módon. Minimális deklaratív támogatással védelmet kapunk az olyan gyakori támadásokkal szemben, mint a munkamenet rögzítése, a kattintások feloldása és a webhelyek közötti kérelmek hamisítása.
  • Mobil: Képességeket biztosít az eszköz észlelésére és az alkalmazás viselkedésének ennek megfelelő adaptálására. Támogatja az eszköztudatos nézetkezelést az optimális felhasználói élmény érdekében, a helypreferencia-kezelést és a helyváltót.
  • Köteg: Könnyű keretet biztosít a kötegelt alkalmazások fejlesztéséhez vállalati rendszerek számára, mint például az adatarchiválás. Intuitív támogatással rendelkezik ütemezéshez, újraindításhoz, kihagyáshoz, mutatók gyűjtéséhez és naplózáshoz. Emellett optimalizálás és particionálás révén támogatja a nagy volumenű feladatok méretének növelését.

Mondanom sem kell, hogy ez elég elvont bevezetés a Tavasz kínálatához. De elegendő teret biztosít számunkra a Spring szervezete és szélessége szempontjából, hogy tovább vigyük a vitánkat.

4. Tavasz működésben

Szokás egy hello-world program hozzáadása az új technológiák megértéséhez.

Lássuk, hogyan A tavasz süteménysétává teheti, ha olyan programot írunk, amely nemcsak a hello-world-t teszi. Létrehozunk egy alkalmazást, amely a CRUD-műveleteket REST API-ként tárja fel egy olyan tartományi entitáshoz, mint az Employee, amelyet memóriában lévő adatbázis támogat. Mi több, az alapvető hitelesítéssel megvédjük a mutációs végpontjainkat. Végül, egyetlen alkalmazás sem lehet teljes, jó, régi egységtesztek nélkül.

4.1. Projekt beállítása

A Spring Boot projektet a Spring Initializr használatával állítjuk be, amely egy kényelmes online eszköz a megfelelő függőségű projektek indításához. A Web, a JPA, a H2 és a Security projektfüggőségként hozzáadjuk a Maven konfigurációs beállításának megfelelő megszerzéséhez.

A bootstrappingről további részletek az egyik korábbi cikkünkben találhatók.

4.2. Domainmodell és perzisztencia

Ilyen kevés tennivaló miatt már készen állunk a tartományi modell és a kitartás meghatározására.

Először határozzuk meg a Munkavállaló mint egyszerű JPA entitás:

@Entity public class Employee {@Id @GeneratedValue (strategy = GenerationType.AUTO) private Long id; @NotNull private String keresztnév; @NotNull private String vezetéknév; // Normál kivitelező, mérőeszközök és beállítók}

Vegye figyelembe az automatikusan létrehozott azonosítót, amelyet felvettünk az entitás definíciónkba.

Most meg kell határoznunk egy JPA-adattárat az entitásunk számára. A Tavasz itt teszi igazán egyszerűvé:

nyilvános felület EmployeeRepository kiterjeszti a CrudRepository {List findAll (); }

Csak annyit kell tennünk, hogy definiálunk egy ilyen felületet, és A tavaszi JPA biztosítja az alapértelmezett és az egyedi műveletekkel kiegészített megvalósítást. Nagyon szép! További részletek a Spring Data JPA-val való együttműködésről további cikkeinkben találhatók.

4.3. Vezérlő

Most meg kell határoznunk egy webvezérlőt a bejövő kérések átirányításához és kezeléséhez:

@RestController public class EmployeeController {@Autowired private EmployeeRepository repository; @GetMapping ("/ alkalmazottak") public getEmployees () {return repository.findAll (); } // Egyéb CRUD végpont-kezelők}

Tényleg, csak annyit kellett tennünk jegyezze fel az osztályt és határozza meg az útválasztási metainformációkat az egyes kezelő módszerekkel együtt.

A Spring REST vezérlőkkel való munkát előző cikkünk részletesen tárgyalja.

4.4. Biztonság

Tehát mindent meghatároztunk, de mi a helyzet az olyan műveletek biztonságával, mint az alkalmazottak létrehozása vagy törlése? Nem akarunk hitelesítetlen hozzáférést ezekhez a végpontokhoz!

A tavaszi biztonság valóban ragyog ezen a területen:

@EnableWebSecurity nyilvános osztály A WebSecurityConfig kiterjeszti a WebSecurityConfigurerAdapter {@Override protected void configure (HttpSecurity http) dobja a {http .authorizeRequests () .antMatchers (HttpMethod.GET, "/ alkalmazottak", "/ alkalmazottak / **" () "kivételeket. anyRequest () .hitelesített () .és () .httpBasic (); } // egyéb szükséges bab és meghatározások}

További részletek vannak itt, amelyek megértéséhez figyelmet kell fordítani, de a legfontosabb szempont az a deklaratív módon, ahogyan csak a GET műveleteket engedélyeztük korlátozás nélkül.

4.5. Tesztelés

Most mindent megtettünk, de várj, hogyan teszteljük ezt?

Nézzük meg, hogy a Spring megkönnyítheti-e az egység tesztek írását a REST vezérlők számára:

@RunWith (SpringRunner.class) @SpringBootTest (webEnvironment = WebEnvironment.RANDOM_PORT) @AutoConfigureMockMvc nyilvános osztály EmployeeControllerTests {@Autowired private MockMvc mvc; @Test @WithMockUser () public void givenNoEmployee_whenCreateEmployee_thenEmployeeCreated () dobja a Kivételt {mvc.perform (post ("/ alkalmazottak"). Content (új ObjectMapper (). WriteValueAsString (új alkalmazott ("Első", "Utolsó")). csrf ())) .contentType (MediaType.APPLICATION_JSON) .accept (MediaType.APPLICATION_JSON)) .andExpect (MockMvcResultMatchers.status () .isCreated ()) .andExpect (jsonPath "" $ (firstName) ". )) .andExpect (jsonPath ("$. vezetékNév", is ("Utolsó"))); } // egyéb vizsgálatok szükség szerint}

Ahogy látjuk, A Spring biztosítja a szükséges infrastruktúrát az egyszerű egység- és integrációs tesztek megírásához amelyek egyébként az inicializálandó és konfigurálandó Spring kontextustól függenek.

4.6. Az alkalmazás futtatása

Végül hogyan futtatjuk ezt az alkalmazást? Ez a Spring Boot másik érdekes aspektusa. Bár ezt rendszeres alkalmazásként csomagolhatjuk, és hagyományosan egy Servlet-tárolóra telepíthetjük.

De hol szórakoztató ez! A Spring Boot beágyazott Tomcat szerverrel érkezik:

@SpringBootApplication public class Application {public static void main (String [] args) {SpringApplication.run (Application.class, args); }}

Ez egy olyan osztály, amelyet előre létrehoznak a bootstrap részeként, és minden szükséges adattal rendelkezik az alkalmazás elindításához a beágyazott szerver segítségével.

Sőt, ez nagyon testreszabható.

5. A tavasz alternatívái

Míg a keretrendszer használatának megválasztása viszonylag könnyebb, a keretek közötti választás gyakran ijesztő lehet a rendelkezésünkre álló választásokkal. Ehhez azonban legalább durván meg kell értenünk, hogy milyen alternatívák vannak a tavasz által kínált funkciók számára.

Ahogy korábban megbeszéltük, a tavaszi keretrendszer projektjeivel együtt széles választékot kínál egy vállalkozásfejlesztő számára, amelyből választhat. Ha gyorsan felmérjük a korabeli Java-keretrendszereket, akkor sem közelítik meg azt az ökoszisztémát, amelyet a tavasz nyújt számunkra.

Bizonyos területekre azonban meggyőző érvet alkotnak, hogy alternatívát válasszanak:

  • Tanács: Robusztus IoC tárolót kínál a Java alkalmazásokhoz
  • Játék: Megfelelően illeszkedik webes keretrendszerbe, reaktív támogatással
  • Hibernálás: A JPA támogatásával létrehozott adatelérési keret

Ezeken kívül vannak olyan friss kiegészítések, amelyek szélesebb körű támogatást kínálnak, mint egy adott domain, de még mindig nem fedik le mindazt, amit a Spring kínál:

  • Mikronaut: JVM-alapú keretrendszer, amely felhő-natív mikroszolgáltatásokhoz igazodik
  • Quarkus: Új korú Java verem, amely gyorsabb indítási időt és kisebb lábnyomot ígér

Nyilvánvaló, hogy a lista teljes iterálása nem szükséges és nem is megvalósítható, de itt átfogó képet kapunk.

6. Szóval, miért válasszuk a tavaszt?

Végül felépítettük az összes szükséges kontextust annak a központi kérdésünknek a megválaszolásához, hogy miért tavasz? Megértjük, hogy a keretrendszer hogyan segíthet bennünket a komplex vállalati alkalmazások fejlesztésében.

Sőt, megértjük azokat a lehetőségeket, amelyeket olyan speciális problémákra kaptunk, mint a web, az adatokhoz való hozzáférés, az integráció a keretrendszer szempontjából, különösen a Java esetében.

Most hol ragyog a Tavasz mindezek között? Fedezzük fel.

6.1. Használhatóság

Bármely keretrendszer népszerűségének egyik legfontosabb szempontja, hogy a fejlesztők mennyire könnyen tudják használni. Számos konfigurációs opciót nyerhet át, és a Konfigurációkonfiguráció teszi lehetővé a fejlesztők számára nagyon könnyű elindítani, majd pontosan konfigurálni, amire szükségük van.

Projektek, mint A Spring Boot szinte komolytalanná tette a komplex tavaszi projekt indítását. Nem beszélve arról, hogy kiváló dokumentációval és oktatóanyagokkal rendelkezik, amelyek segítenek bárki beszállni.

6.2. Modularitás

A Spring népszerűségének másik kulcsfontosságú eleme az erősen moduláris jellege. Lehetőségeink vannak a teljes tavaszi keret vagy csak a szükséges modulok használatára. Sőt, megtehetjük opcionálisan tartalmazhat egy vagy több tavaszi projektet szükségtől függően.

Ráadásul lehetőségünk van más keretrendszerek, például a Hibernate vagy a Struts használatára is!

6.3. Megfelelés

Bár tavasz nem támogatja a Jakarta EE összes specifikációját, minden technológiáját támogatja, ahol szükséges, gyakran javítja a támogatást a standard specifikációhoz képest. Például a Spring támogatja a JPA-alapú adattárakat, ezért lényegtelenné teszi a szolgáltatóváltást.

Ezenkívül a Spring támogatja az olyan ipari specifikációkat, mint a Reactive Stream a Spring Web Reactive alatt és a HATEOAS a Spring HATEOAS alatt.

6.4. Tesztelhetőség

Bármely keretrendszer elfogadása nagyban függ attól is, hogy mennyire könnyű tesztelni a tetejére épített alkalmazást. Tavasz a középpontban támogatja és támogatja a tesztvezérelt fejlesztést (TDD).

A tavaszi alkalmazás többnyire POJO-kból áll, ami természetesen viszonylag sokkal egyszerűbbé teszi az egység tesztelését. Ugyanakkor a Spring biztosítja a Modellobjektumokat olyan forgatókönyvekhez, mint az MVC, ahol az egység tesztelése egyébként bonyolulttá válik.

6.5 Érettség

A tavasz az innováció, az örökbefogadás és a szabványosítás hosszú múltra tekint vissza. Az évek során ez lett elég érett ahhoz, hogy a leggyakoribb problémák alapértelmezett megoldásává váljon nagyszabású vállalati alkalmazások fejlesztésében.

Ami még izgalmasabb, hogy mennyire aktívan fejlesztik és tartják karban. Az új nyelvi funkciók és a vállalati integrációs megoldások támogatását minden nap fejlesztjük.

6.6. Közösségi támogatás

Végül, de nem utolsósorban, bármilyen keretrendszer vagy akár könyvtár az innováció révén túléli az iparágat, és nincs jobb hely az innováció számára, mint a közösség. A tavasz nyílt forráskódú a Pivotal Software vezetésével, valamint szervezetek és egyéni fejlesztők nagy konzorciumának támogatásával.

Ez azt jelentette, hogy továbbra is kontextuális és gyakran futurisztikus, amint azt az égisze alatt álló projektek száma is mutatja.

7. Okok Nem a tavasz használatához

Sokféle alkalmazás létezik, amelyek a tavasz eltérő használatának előnyeit élvezhetik, és ez olyan gyorsan változik, ahogy a tavasz növekszik.

Meg kell azonban értenünk, hogy a Spring, mint bármely más keretrendszer, hasznos az alkalmazásfejlesztés összetettségének kezelésében. Ez segít elkerülni a gyakori buktatókat, és fenntartja az alkalmazást, ahogy az idővel növekszik.

Ez további erőforrás-lábnyom és tanulási görbe árán jön létrebármennyire is kicsi. Ha valóban van olyan alkalmazás, amely elég egyszerű és várhatóan nem válik komplexebbé, akkor talán nagyobb hasznot jelent, ha egyáltalán nem használ semmilyen keretet!

8. Következtetés

Ebben a cikkben megvitattuk a keretrendszer alkalmazás fejlesztésének előnyeit. Röviden megvitattuk különösen a tavaszi keretrendszert.

A témában megvizsgáltuk a Java számára elérhető alternatív keretrendszereket is.

Végül megvitattuk azokat az okokat, amelyek arra kényszeríthetnek minket, hogy a Tavasz választását keressük meg a Java számára.

Ezt a cikket azonban tanácsokkal kell befejeznünk. Bármilyen kényszerítően is hangzik, általában nincs egyetlen, mindenki számára megfelelő megoldás a szoftverfejlesztésben.

Ezért bölcsességünket alkalmaznunk kell a legegyszerűbb megoldások kiválasztásában azokra a konkrét problémákra, amelyeket meg akarunk oldani.