Spring tanfolyam - 2. alkalom
A mostani és a következő alkalmon egy ticketing alkalmazást fogunk készíteni táblákkal, címkékkel, jegyekkel és kommentekkel.
0. Fejezet - Kiinduló projekt
Fork
Látogassuk meg a projekt oldalát GitHub-on, majd hozzunk létre egy új Fork-ot, amin majd dolgozni tudunk (ez lényegében készít egy másolatot a projektről a GitHub fiókunkra).

Arra figyeljünk, hogy NE csak a master-et másoljuk át!

Amint láthatjuk, több branch-csel (ággal) is rendelkezik a projektünk, ami a különböző fejezetekhez lett előkészítve. Ha valahol elakadnánk vagy vissza szeretnénk nézni valamit, akkor it a fejezetek között van lehetőségünk "ugrálni".

Clone
Klónozzuk le a frissen létrejött projektünket GitHubról! Ezt megtehetjük például a git clone <URL> paranccsal. Ezután váltsunk át a chapter-0 nevű branchre a git checkout chapter-0 vagy git switch chapter-0 paranccsal (a projektmappán belül)!
A projektünk tartalmaz már egy egyszerű Spring Boot alkalmazást (TicketingSpringApplication.kt).
@SpringBootApplication
class TicketingSpringApplication
fun main(args: Array<String>) {
runApplication<TicketingSpringApplication>(*args)
}
AppService létrehozása
Egy egyszerű szolgáltatást hozzunk létre AppService néven, két metódussal:
- Legyen egy
getHellometódusunk, ami visszaad egy"Hello World!"sztringet. - Legyen egy
getPersonalizedHellometódusunk, ami egy nevet (name: String) és egy napot (day: String?) kap paraméterül, majd visszatér egy köszöntéssel. Figyeljünk arra, hogy adaylehetnullis!
Először hozzuk létre a szolgáltatás osztályt!
@Service
class AppService{
}
Hogy a @Service annotációt használni tudjuk importáljuk be a szükséges könyvtárat:
import org.springframework.stereotype.Service
Vegyük fel a getHello metódusunkat:
fun getHello(): String{
return "Hello World!"
}
Majd a getPersonalizedHello-t is írjuk meg. Arra figyeljünk, hogy a day lehet null is, így ebben az esetben "day" legyen az értéke.
fun getPersonalizedHello(name: String, day: String?): String{
val Day = day?:"day"
return "Hello $name, have a nice $Day!"
}
Tehát a teljes osztály így néz ki:
@Service
class AppService{
fun getHello(): String{
return "Hello World!"
}
fun getPersonalizedHello(name: String, day: String?): String{
val Day = day?:"day"
return "Hello $name, have a nice $Day!"
}
}
AppController létrehozása
Hozzunk létre egy kontrollert AppController néven, ami két végpontot definiál:
- A
/végponton a szolgáltatásunkgetHelloköszönő metódusát, míg - a
/hello/{name}végponton a személyre szabottgetPersonalizedHelloköszönést használja.
Kezdjük megint az osztály létrehozásával, ami kap egy @RestController annotációt, és paraméterül fogadja az appService szolgáltatást:
@RestController
class AppController(private val appService: AppService) {
}
Vegyük fel a GET típusú / végpontot, ami a szolgáltatás getHello metódusát használja:
@GetMapping("/")
fun getHello(): String{
return appService.getHello()
}
Vegyük fel a GET típusú /hello/{name} végpontot, ami a szolgáltatás getPersonalizedHello(name: String, day: String?) metódusát használja. @Param ???????????????????????????? nem @RequestParam???
@GetMapping("/hello/{name}")
fun getPersonalizedHello(@PathVariable name: String, @Param("day") day: String?): String{
return appService.getPersonalizedHello(name, day)
}
A teljes kontroller:
@RestController
class AppController(private val appService: AppService) {
@GetMapping("/")
fun getHello(): String{
return appService.getHello()
}
@GetMapping("/hello/{name}")
fun getPersonalizedHello(@PathVariable name: String, @Param("day") day: String?): String{
return appService.getPersonalizedHello(name, day)
}
}
Használható végpontok
Futtassuk az alkalmazást, és látogassunk el a következő URL-ekre:
http://localhost:8080/
http://localhost:8080/hello/Miki
Feladatot készítette: Szabó Benedek, Leírást készítette: Bácsi Miklós