kamer.dev

Spring Initialzr ile Proje Oluşturma

- #java - #spring

Merhaba, bu yazıda Spring Initializr kullanarak basit bir HelloWorld projesi yapmayı anlatacağım. Spring Initialzr, istediğimiz gerekliliklere göre bize temel konfigürasyonları hazır bir Spring projesi üretip veren bir araçtır. Benim bildiğim 3 farklı kullanım şekli var:

Ben bu yazıda doğrudan internet sitesi üzerinden anlatacağım. Öncelikle yukarıda verdiğim Spring Initialzr linkine tıklayın.

Bu sayfada proje adını, Spring ve Java sürümlerini, Maven/Gradle tercihini ve gereklilikleri seçiyoruz. Ben yalnızca Web gerekliliğini seçip bir proje oluşturuyorum. Tüm gereklilikleri girip Generate Project’e tıklayıp projeyi indirdikten sonra arşivden çıkarın. Sonra (Eclipse için) Project Explorer kısmından Import seçeneğine tıklayıp açılan menüde Existing Maven Project’i seçin ve arşivden çıkardığınız projeyi Import edin.

Finish seçeneğine tıkladıktan sonra ortalama 3–5 saniye projeyi gerekliliklerini indirmesi sürüyor. Projenin son hali aşağıdaki gibi oluyor.

Bu proje yapısını biraz inceleyelim.

  • Spring Elements kısmında Spring’e ait olan Bean, Controller, Repository gibi bileşenlerin kopyası bulunuyor.
  • src/main/java kısmında java classlarımız bulunuyor.
  • src/main/resources application.properties dosyasının bulunduğu dizin. Aynı zamanda html, css dosyalarımızı da burada tutuyoruz.
  • src/test/java kısmı test için kullanılıyor.
  • Altında JRE ve Maven bağımlılıkları bulunuyor.

Projemiz bu haliyle çalışmaya hazır. Sağ tıklayıp Run As > Spring Boot App diyerek çalıştırabiliriz.

Çalıştırdığımızda Console’da buna benzer bir çıktı alacaksınız. Burada aşama aşama neler yaptığını yazıyor. Şimdilik burada yazanlar bizim için önemsiz fakat ileride kullanacağız. Şimdilik önemli olan kısım “Started HelloWorldApplication in …” yazan kısım ve “Tomcat started on port(s): 8080 (http)…” yazan kısım. Uygulamamızın default port olan 8080 portunda başarılı bir şekilde çalıştırıldığını buradan görüyoruz. Henüz isteklerimize cevap verecek bir bileşen olmadığından dolayı localhost:8080 adresine gittiğinizde error sayfası ile karşılaşacaksınız. Son olarak bir Hello World çıktısı alıp bu yazıyı bitirelim.

src/main/java kısmına gelin ve HelloWorld paketinin altında yeni bir paket oluşturun. Ben adını com.kamer.helloworld.controllers olarak veriyorum. Burada önemli bir noktaya değinmekte fayda var. Siz projeyi çalıştırdığınızda Spring, Controller, Repository, RestController gibi bileşenleri taramak için main method’un bulunduğu paketin altındaki paketleri tarayacak. Bu yüzden eğer oluşturacağınız herhangi bir component bu paketin alt katmanlarından birinde olmazsa hata alırsınız. Spring’e başka bir yeri taraması için bir ayar yapabiliriz fakat şimdilik bu şekilde devam ediyorum.

Sonra bu paketin içinde HelloController adında bir sınıf yaratıp sınıfın hemen üstüne @RestController anotasyonunu ekleyin. Sonra aşağıdaki gibi bir method oluşturun.

Yukarıda yaptığımız işlemi açıklayayım. Öncelikle anotasyonlar Spring Framework ile iletişim kurma şeklimiz. Yani bazı şeyleri Spring’e söyleyip ondan sonra kalan şeyleri serinin ilk yazısında açıkladığım IoC prensibine bırakıyoruz. Öncelikle bu sınıfın RestController olduğunu, yani yapılan HTTP isteklerine cevap verecek bir controller olduğunu söyledik. Altındaki method’da ise ilk restful endpoint’imizi yarattık. GET isteklerine cevap vereceğini, “/” dizinine gelecek istekleri dinleyeceğini söyledik. Biz uygulamamızı çalıştırdığımızda Spring öncelikle bu anotasyonları okuyacak, eğer biz aksi bir şey söylemezsek Main metodun bulunduğu paketin altındaki her yere bakıp bunları ‘map’leyecek. Ondan sonra gelen isteklere bizim istediğimiz şekilde cevap verilmesini sağlayacak. Bu sınıfı yazdıktan sonra Relaunch yaparak uygulamamızı tekrar çalıştırıyoruz. Bu sefer konsolda farklı bir şey yazıyor.

Burada paketleri tararken bizim yazdığımız @RequestMapping anotasyonunu gördüğünü, home() methodunu çalıştırmak için “/” dizinine gelecek bir GET isteği beklediğini bize söylüyor. Bu aşamadan sonra ister Postman gibi bir programla, ister curl ile, isterseniz de tarayıcınızla localhost:8080 adresine GET isteği göndererek Hello World! çıktısını görebilirsiniz.