DİKKAT: Yazıda çeşitli yanlışlar, yanlış açıkladığım yerler ya da göstermediğim değişiklikler olabilir, hepimiz yaptığımız işe ve farklılığına bağlı olarak çeşitli yanlışlar yapabiliyoruz ve sonucunda farklı çözümler bulabiliyoruz ya da benim yanlış bildiğim bir şey de olabilir. Haliyle hiçbir konuda da sorumluluk almıyorum yazıdaki herhangi bir metinden, bu yazı sadece yardımcı olması ümidiyle yazılmıştır. Şu anda göz gezdirirken bile olmaması gereken şekilde yazılmış yazılar görebiliyorum.
Bu yazımda benim de öğrenmekte olduğum Spring Framework'te basit bir proje oluşturacağız. Projemizde bir Controller, bir Component ve bu Component için de bir Service oluşturacağız.
Projenin kaynak kodu:
github.com
Kimdir bu Spring?
Spring Framework, Java tabanlı bir yazılım geliştirme ve uygulama çerçevesidir. Kod yazarken altyapı detaylarıyla ilgilenmek yerine amaca odaklanmak konusunda size yardım eder ve birçok büyük projede kullanılır. IOC (Inversion of Control), AOP (Aspect-Oriented Programming), MVC (Model-View-Controller) gibi modülleriyle bol bol kullanılır.
Bu kadar muhabbet yeterli sanırım, başlayalım.
Maven ile, spring-core modülünü indirmek:
Her ne kadar ben IntelliJ kullansam da siz istediğiniz IDE'yi kullanabilirsiniz, her şey neredeyse aynı.
Önce sıfırdan bir proje oluşturuyorum ve Build system olarak Maven kullanacağımı belirtiyorum.
Projemizi oluşturduktan sonra pom.xml dosyamızı açıp istediğimiz versiyonunu ekliyoruz. Ben son sürümü olan 6.1.4 sürümünü ekleyeceğim fakat siz daha yeni ya da eski versiyonlar için https://mvnrepository.com/ sitesine bakabilirsiniz.
Ekleyeceğimiz satırlar şunlar, bu satırları alıp properties içine yazacağız
Değişiklikleri ekledikten sonra şimdi başlayabiliriz. Ben burada örnek olması açısından kaydolma konseptli, bir SQLite database'i içine üye adı ve şifre kaydedecek baştan savma bir proje yapacağım.
Öncelikle classlarımızı oluşturalım. Burada tahmin edebileceğiniz gibi sonu Service ile biten Service, içinde Service geçmeyen class Component ve Main ise Controller olacak.
Şimdi sırada Annotation'larımızı eklemek var. Annotation'larımız Spring'e hangi dosyanın ne işe yaradığını ve neyin neyle bağlandığını gösterecek.
Öncelikle Main classımız ile başlıyorum.
İki annotation kullanacağız biri @Configuration, diğeri ise @ComponentScan.
@Configuration: Bu annotation bu classın konfigürasyon sınıfı olduğunu gösterir, diğer komponentleri tarar, bağlar ve kullanırız.
@ComponentScan(basepackages = "org.example"): Burası bize Komponentleri tarayacağı alanı ve org.example paketimiz içinde arayacağını belirtiyor.
AnnotationConfigApplicationContext context ... Context(Main.class): Bu yazı bizim konfigürasyonun Main.class içinde olduğunu söylüyor. Bunu başka bir dosyada daha yapabilirdik fakat lüzumu yok, böyle daha okunabilir. context objemizle diğer objelere erişip işlem yaptıracağız.
Şimdi sırada @Component yani mimar sınıfımız var, adı AddToSQL. Amele sınıfımız ise @Service sınıfımız olacak. Müdür abimiz Main, komponente emri veriyor, komponentimiz ise belirlenmiş amelemize işini yaptırıyor. Basitçe açıklamak gerekirse bütün yazıyı, herkes lafı geçirebildiğine yani. Neyse.
Bu bizim az önce bahsettiğimiz @Component yani memur sınıfımız, amacı bizden inputları almak ve bunu bizim servis sınıfımıza yollayarak bu inputları amelemizin yani @Service sınıfımızın dosyaya kaydetmesini sağlamak.
private AddToSQLService addToSQLService: Burası AddToSQLService objemiz için bir değişken tanımlar.
@Autowired
public void userInput(AddToSQLService svc){ this.addToSQLService = svc}: Burası AddToSQLService objesini projemize otomatik olarak enjekte eder, buradaki @AutoWired ifadesi ise dediğim gibi otomatik olarak bağlamaya yarıyor.
public void sendToService(){}: Basit bir sınıf burası, temel Java bilgisiyle anlaşılabilir fakat yine de açıklayayım: Bir scanner oluşturup kullanıcı adı ve şifre girişlerini birer string değerlerine alıp enjekte ettiğimiz objenin alakalı metoduna yolluyoruz, onun yapacağı işleri ise şimdi öğreneceğiz
throws SQLException ise database'e eriştiğimiz için exception yersek çökmesin diye.
Şimdi sıra son sınıfımızda, @Service sınıfımız AddToSQLService. Burada yapacaklarımız ise aldığımız bu inputları oluşturulacak SQLite database'ine eklemek ve sonra da bitiş.
Burası tamamen amelelik. SQLite ile database oluşturulması ve bu oluşturulanların projeye eklenmesi.
public AddToSQLService{}: Bu metot bizden istediğimiz şekilde database oluşturan stringimizi alıyor ve bu dosyayı oluşturuyor.
public addToSQLService(String name, String pass{}: Burası da kalan ameleliği yapıyor. Bizim daha önce oluşturup bu metodumuza yolladığımız name ve pass stringlerimizi alıyor (otomatik olarak bağlıyor yine), statementlarımızı hazırlıyor ve komutumuzu yolluyor ve herhangi bir aşamada hata çıkarsa onu da ekrana yazdırıyor alttaki catch ile.
Evet bunları bitirdiğimize göre şimdi ilk oluşturduğumuz context ile componentimizi çağıralım.
Yeni iki satırımız var, biri bean dediğimiz objemize erişmemizi sağlıyor ve diğeri ise metodumuzu çağırmamızı sağlıyor.
Şimdi programımızı çalıştırıyoruz ve sonuç.
Okuduğunuz için teşekkür ederim, bu yazıya dolaylı olarak sponsor olan EspressoLab (Wi-Fi ve kahve), Akbank (bedava kahve kampanyası
) ve OpenAI şirketlerine teşekkürlerimi sunarım, yorumlarınızı bekliyorum 
Bu yazımda benim de öğrenmekte olduğum Spring Framework'te basit bir proje oluşturacağız. Projemizde bir Controller, bir Component ve bu Component için de bir Service oluşturacağız.
Projenin kaynak kodu:
GitHub - bugra455/ExampleSpringProject: Example Spring Project for Beginners
Example Spring Project for Beginners. Contribute to bugra455/ExampleSpringProject development by creating an account on GitHub.
Kimdir bu Spring?
Spring Framework, Java tabanlı bir yazılım geliştirme ve uygulama çerçevesidir. Kod yazarken altyapı detaylarıyla ilgilenmek yerine amaca odaklanmak konusunda size yardım eder ve birçok büyük projede kullanılır. IOC (Inversion of Control), AOP (Aspect-Oriented Programming), MVC (Model-View-Controller) gibi modülleriyle bol bol kullanılır.
Bu kadar muhabbet yeterli sanırım, başlayalım.
Maven ile, spring-core modülünü indirmek:
Her ne kadar ben IntelliJ kullansam da siz istediğiniz IDE'yi kullanabilirsiniz, her şey neredeyse aynı.
Önce sıfırdan bir proje oluşturuyorum ve Build system olarak Maven kullanacağımı belirtiyorum.
Projemizi oluşturduktan sonra pom.xml dosyamızı açıp istediğimiz versiyonunu ekliyoruz. Ben son sürümü olan 6.1.4 sürümünü ekleyeceğim fakat siz daha yeni ya da eski versiyonlar için https://mvnrepository.com/ sitesine bakabilirsiniz.
Ekleyeceğimiz satırlar şunlar, bu satırları alıp properties içine yazacağız
HTML:
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.45.1.0</version>
</dependency>
HTML:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.1.4</version>
</dependency>
Değişiklikleri ekledikten sonra şimdi başlayabiliriz. Ben burada örnek olması açısından kaydolma konseptli, bir SQLite database'i içine üye adı ve şifre kaydedecek baştan savma bir proje yapacağım.
Şimdi sırada Annotation'larımızı eklemek var. Annotation'larımız Spring'e hangi dosyanın ne işe yaradığını ve neyin neyle bağlandığını gösterecek.
Öncelikle Main classımız ile başlıyorum.
İki annotation kullanacağız biri @Configuration, diğeri ise @ComponentScan.
@Configuration: Bu annotation bu classın konfigürasyon sınıfı olduğunu gösterir, diğer komponentleri tarar, bağlar ve kullanırız.
@ComponentScan(basepackages = "org.example"): Burası bize Komponentleri tarayacağı alanı ve org.example paketimiz içinde arayacağını belirtiyor.
AnnotationConfigApplicationContext context ... Context(Main.class): Bu yazı bizim konfigürasyonun Main.class içinde olduğunu söylüyor. Bunu başka bir dosyada daha yapabilirdik fakat lüzumu yok, böyle daha okunabilir. context objemizle diğer objelere erişip işlem yaptıracağız.
Şimdi sırada @Component yani mimar sınıfımız var, adı AddToSQL. Amele sınıfımız ise @Service sınıfımız olacak. Müdür abimiz Main, komponente emri veriyor, komponentimiz ise belirlenmiş amelemize işini yaptırıyor. Basitçe açıklamak gerekirse bütün yazıyı, herkes lafı geçirebildiğine yani. Neyse.
Bu bizim az önce bahsettiğimiz @Component yani memur sınıfımız, amacı bizden inputları almak ve bunu bizim servis sınıfımıza yollayarak bu inputları amelemizin yani @Service sınıfımızın dosyaya kaydetmesini sağlamak.
private AddToSQLService addToSQLService: Burası AddToSQLService objemiz için bir değişken tanımlar.
@Autowired
public void userInput(AddToSQLService svc){ this.addToSQLService = svc}: Burası AddToSQLService objesini projemize otomatik olarak enjekte eder, buradaki @AutoWired ifadesi ise dediğim gibi otomatik olarak bağlamaya yarıyor.
public void sendToService(){}: Basit bir sınıf burası, temel Java bilgisiyle anlaşılabilir fakat yine de açıklayayım: Bir scanner oluşturup kullanıcı adı ve şifre girişlerini birer string değerlerine alıp enjekte ettiğimiz objenin alakalı metoduna yolluyoruz, onun yapacağı işleri ise şimdi öğreneceğiz
Şimdi sıra son sınıfımızda, @Service sınıfımız AddToSQLService. Burada yapacaklarımız ise aldığımız bu inputları oluşturulacak SQLite database'ine eklemek ve sonra da bitiş.
Burası tamamen amelelik. SQLite ile database oluşturulması ve bu oluşturulanların projeye eklenmesi.
public AddToSQLService{}: Bu metot bizden istediğimiz şekilde database oluşturan stringimizi alıyor ve bu dosyayı oluşturuyor.
public addToSQLService(String name, String pass{}: Burası da kalan ameleliği yapıyor. Bizim daha önce oluşturup bu metodumuza yolladığımız name ve pass stringlerimizi alıyor (otomatik olarak bağlıyor yine), statementlarımızı hazırlıyor ve komutumuzu yolluyor ve herhangi bir aşamada hata çıkarsa onu da ekrana yazdırıyor alttaki catch ile.
Evet bunları bitirdiğimize göre şimdi ilk oluşturduğumuz context ile componentimizi çağıralım.
Yeni iki satırımız var, biri bean dediğimiz objemize erişmemizi sağlıyor ve diğeri ise metodumuzu çağırmamızı sağlıyor.
Şimdi programımızı çalıştırıyoruz ve sonuç.
Okuduğunuz için teşekkür ederim, bu yazıya dolaylı olarak sponsor olan EspressoLab (Wi-Fi ve kahve), Akbank (bedava kahve kampanyası
Dosya Ekleri
Son düzenleyen: Moderatör: