Spring Framework Projesi Nasıl Oluşturulur?
Spring Framework, Spring ekosistemi içerisinde yer alan en temel projedir. Spring Boot, Spring Data gibi diğer projeler Spring Framework projesini temel alarak oluşturulmuştur. Bu nedenle bu yazımızda ilk olarak en saf haliyle nasıl bir Spring Framework projesi oluşturabileceğinizi göstereceğiz.
Bir önceki Spring Framework Nedir? - Spring Ekosistemi başlıklı yazımızda Spring ekosistemi ve Spring Framework hakkında detaylı bilgiler vermiştik. Bu yazımızda da ilk Spring projemizi nasıl oluşturacağımızı göstererek devam ediyoruz.
Spring Framework, 8 gruba (feature) ayrılmış yaklaşık 20 modülden oluştur. Grupları aşağıdaki şemada görebilirsiniz.
Bu modüllerin listesini ve artifact'lerini de bir tabloya dökersek aşağıdaki gibi olacaktır.
GroupId | ArtifactId | Description |
---|---|---|
org.springframework | spring-aop | Proxy-based AOP support |
org.springframework | spring-aspects | AspectJ based aspects |
org.springframework | spring-beans | Beans support, including Groovy |
org.springframework | spring-context | Application context runtime, including scheduling and remoting abstractions |
org.springframework | spring-context-support | Support classes for integrating common third-party libraries into a Spring application context |
org.springframework | spring-core | Core utilities, used by many other Spring modules |
org.springframework | spring-expression | Spring Expression Language (SpEL) |
org.springframework | spring-instrument | Instrumentation agent for JVM bootstrapping |
org.springframework | spring-instrument-tomcat | Instrumentation agent for Tomcat |
org.springframework | spring-jdbc | JDBC support package, including DataSource setup and JDBC access support |
org.springframework | spring-jms | JMS support package, including helper classes to send/receive JMS messages |
org.springframework | spring-messaging | Support for messaging architectures and protocols |
org.springframework | spring-orm | Object/Relational Mapping, including JPA and Hibernate support |
org.springframework | spring-oxm | Object/XML Mapping |
org.springframework | spring-test | Support for unit testing and integration testing Spring components |
org.springframework | spring-tx | Transaction infrastructure, including DAO support and JCA integration |
org.springframework | spring-web | Foundational web support, including web client and web-based remoting |
org.springframework | spring-webmvc | HTTP-based Model-View-Controller and REST endpoints for Servlet stacks |
org.springframework | spring-websocket | WebSocket and SockJS infrastructure, including STOMP messaging support |
Bir Spring Framework projesi oluşturabilmek için Spring ekosisteminin temeli olan Spring Core Container grubunu kullanmamız gerekecek. Çünkü diğer tüm Spring projeleri core modülü ile türetilebilir.
Spring Framework projemizi Maven veya Gradle ile aracılığıyla rahatlıkla oluşturabiliriz. Her ikisini de hızlıca göz atalım.
1. Maven ile Spring Framework Projesi Oluşturma
Maven paket yöneticisi ile Spring Framework projesi oluşturabilmek için öncelikle kullandığınız editörde "New Project" işlevi ile proje oluşturma ekranını açınız.
Ardından Maven paket yöneticisini seçiniz.
Açılan pencerede proje adımızı belirledikten sonra groupId / ArtifactId / Version bilgilerini de opsiyonel olarak girerek projemizi oluşturuyoruz.
Bu işlemden sonra proje kurulumu tamamlanmış oluyor.
Artık sıra Spring Framework paketlerimizi eklemeye geldi. En temelde Core paketlerimizi eklediğimizde Spring Framework projemiz kullanıma hazır hale gelecektir. Bunun için spring-context artifact'ini eklememiz diğer tüm bağımlı olduğu core paketlerinin de eklenmesini sağlayacaktır. Aşağıdaki dependecy kodunu direkt olarak pom.xml dosyasına ekleyebilirsiniz.
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.13</version>
</dependency>
</dependencies>
Ardından pom.xml dosyamız şu şekilde gözükecek ve Load Maven Changes işleminin ardından dikkat ettiğinizde göreceğiniz gibi tüm core paketleri External Libraries altında görebileceksiniz.
Tebrikler! Artık Spring Framework projeniz hazır ve en pure haliyle projenizi geliştirmeye başlayabilirsiniz.
2. Gradle ile Spring Framework Projesi Oluşturma
Gradle ile Spring Framework projesi oluşturmanın Maven ile Spring Framework projesi oluşturmaktan hiç bir farkı yoktur. Tek yapmanız gereken öncelikle New Project sayfasında Gradle paket yöneticisini seçmek olacaktır.
Açılan pencerede proje adımızı belirledikten sonra groupId / ArtifactId / Version bilgilerini de opsiyonel olarak girerek projemizi oluşturuyoruz.
Bu işlemden sonra proje kurulumu tamamlanmış oluyor.
Şimdi sıra Spring Core Container'i projemize eklemeye geldi. Bunun için aynı şekilde spring-context artifact'ini Gradle için ekleyeceğiz. Aşağıdaki kod yardımızyla bunu yapabilirsiniz.
implementation 'org.springframework:spring-context:5.3.16'
Yeniden tebrikler! Tekrardan Spring Framework projeniz hazır ve en pure haliyle projenizi geliştirmeye başlayabilirsiniz.
3. Projede Oluşturulacak POJO Class Oluşturmak
Spring Framework projesi örneğimizde Bean olarak kullanmak için çok dummy bir POJO classı üretelim.
package model;
public class User {
private String name;
private String surname;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
}
NOT: Application Context ve Bean konusunu bir sonraki yazımızda oldukça detaylı inceleyeceğiz. Şimdilik Application Context'i obje havuzu, Bean'leri ise bu havuza eklenen objeler olarak düşünmeniz yeterlidir.
Bu andan itibaren BeanFactory interface'nin bize sunduğu üç yöntemle yolumuza devam edebiliriz. Bunlar;
- XML İle ApplicationContext oluşturmak
- Annotation ile ApplicationContext oluşturmak
- Programatik yöntemle ApplicationContext oluşturmak
Tüm bu yöntemlerin hepsini notta da belirttiğim gibi bir sonraki yazımızda oldukça detaylı inceleyeceğiz. Şimdilik sadece XML yöntemi ile ApplicationContext oluşturarak projemizi teml seviyede bırakalım.
4. XML ile ApplicationContext Oluşturmak
Eski ve benim beğenmediğim bir yöntem olan XML yöntemi ile ApplicationContext oluşturarak Spring Framework projemize ruh verelim. Bunun için ilk olarak resources dizini altında spring.xml isimli dosyamızı aşağıdaki satırlarla oluşturalım.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="model.User"/>
</beans>
Objemizi Spring contexte eklemesi için XML dosyamızda bunu belirttik. Şimdi geriye kalan tek şey Spring Framework projemizi bu spring.xml dosyası ile başlatmak ve Spring'in ilgili objeleri oluşturarak ApplicationContext'e eklemesini sağlamak olacak. Bunun için main classımızda ClassPathXmlApplicationContext'e argümant olarak ilgili dosya adını geçmeliyiz. Aşağıdaki kodlarla bunu kolaylıkla yapabilirsiniz.
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringApplication {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
}
}
Nesnemizin oluşup oluşmadığını test etmek için ApplicationContext'ten obje id si veya objemizin type'ı ile nesnemizi çağıralım ve nesnemizi ekrana bastıralım.
import model.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringApplication {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
User user1 = context.getBean(User.class);
User user2 = (User) context.getBean("user");
System.out.println(user1.toString());
System.out.println(user2.toString());
}
}
Gördüğünüz gibi Spring Framework projemiz ayakta ve nesnelerimizi new lemeye gerek kalmadan contexten çağırıp kullanabiliyoruz. Bundan sonraki makalemizde şunları daha detaylı inceleyeceğiz;
- ApplicationContext veya diğer adıyla Spring Context nedir ve nasıl kullanılır?
- XML, Annotation ve Programatik yöntemle nasıl context oluşturulur?
- Bean ve Component Nedir?
- Autowiring Nedir?
Öyleyse diğer heyecan verici yazımızda görüşmek üzere..