Java’da “bean”, genellikle veri taşımak, saklamak ve işlemek için kullanılan bir nesne veya sınıfı ifade eder. Spring Framework gibi birçok Java kütüphanesi ve çerçevesi, “bean” kavramını yoğun olarak kullanır.
Bean, aşağıdaki özelliklere sahip bir Java sınıfıdır:
- Özellikler (Properties): Bean sınıfı, genellikle özellikler (properties) olarak adlandırılan durum veya veri alanlarına sahiptir. Bu özellikler, bean’in durumunu ve verilerini temsil eder.
- Metotlar (Methods): Bean sınıfı, özellikler üzerinde işlemler gerçekleştiren metotları içerebilir. Bu metotlar, özelliklerin değerlerini almak, ayarlamak veya işlemek için kullanılır.
- Kapsülleme (Encapsulation): Bean sınıfı, genellikle özelliklerin erişimini kontrol etmek için kapsülleme prensibini kullanır. Bu, özelliklere doğrudan erişimi kısıtlamak ve veri bütünlüğünü sağlamak için yapılır.
- JavaBeans Standartlarına Uygunluk: JavaBeans, özellikle Java’nın bileşen tabanlı yazılım geliştirme modelinde kullanılmak üzere standartlaştırılmış bir bileşen modelidir. JavaBean, belirli standartları karşılayan ve genellikle serileştirilebilir olan bir Java sınıfıdır.
Spring Framework içinde “bean” kavramı, genellikle Spring konteyneri tarafından yönetilen ve Spring uygulamasının bir parçası olarak yönetilen herhangi bir nesneyi ifade eder. Bu nesneler, Spring tarafından yönetildiğinden, genellikle Spring’in sunduğu özelliklerden yararlanabilirler ve Spring’in IOC (Inversion of Control) ve DI (Dependency Injection) gibi özelliklerinden faydalanabilirler.
Bu nedenle, Java’da “bean” genellikle bir veri taşıyıcı veya işlevsel nesne olarak kullanılırken, Spring Framework içinde “bean” genellikle Spring tarafından yönetilen ve Spring uygulamasının bileşenlerini temsil eden nesneleri ifade eder.
Eğer ki bean yapımızı oluşturmazsak, Spring’ e şunu söylemiş oluruz: “Bir tane bir şey var ama ne olduğunu bende bilmiyorum…”. Spring’de “Tamam ama bu şey in adı ne? Bana tanıt!” der.
Önce, Spring Initializr kullanarak bir Spring Boot projesi oluşturalım.

Spring Initializr ile Proje Özelliklerini Ayarlama
Sayfanın üst kısmında, proje özelliklerini belirleyebileceğimiz bir dizi seçenekler bulunmakta. Bu kısımda şu detayları belirlememiz gerekiyor;
- Project: Proje tipini seçin. Maven Project seçerek ilerliyoruz.
- Language: Projemizi hangi programlama dili ile yazacağımızı belirliyoruz.
- Spring Boot: Spring Boot sürümünü seçin.
- Project Metadata: Proje adı, paket adı ve diğer gerekli meta verileri girin.
Bağımlılıkları Seçme
- Basit CRUD işlemlerini içerecek projemiz için gerekli modülleri seçeceğiz. Bunlar;
- Spring Web
- Spring Data JPA
- Validation
- Spring Boot DevTools
- H2 Database
- Lombok
Oluşturulan proje dosyasını indirip bir IDE ile projenizi açabilirsiniz. Ben Visual Studio Code ile devam edeceğim.

Projemizin dizinine göz gezdirdiğimizde, Spring Boot uygulamasının giriş noktasını temsil eden Application.java class sını göreceğiz. Bu kısmın ne yaptığını adım adım açıklayalım:
@SpringBootApplication Annotation
@SpringBootApplication annotation, Spring Boot uygulamalarının ana sınıfı üzerine yerleştirilir. Bu annotation, aşağıdaki üç annotation’ı bir araya getiren bir bileşik annotation’dır (@SpringBootApplication içeriğine bakabilirsiniz.):
@SpringBootConfiguration: Bu annotation, sınıfın Spring Boot uygulamasının yapılandırması için bir yapılandırma sınıfı olduğunu belirtir.@EnableAutoConfiguration: Bu annotation, Spring Boot otomatik yapılandırma mekanizmasını etkinleştirir, bu da uygulamanın yapılandırmasını otomatik olarak belirli kurallara göre yapılandırır.@ComponentScan: Bu annotation, Spring tarafından bileşenlerin (bean’lerin) bulunması ve kaydedilmesi için tarama yapılacak paketleri belirtir.
SpringApplication.run Method
SpringApplication.run()metodu, Spring Boot uygulamasını başlatmak için kullanılır.- Bu metot, Spring Boot uygulamasının başlangıç noktasıdır.
- İlk parametre olarak, başlatılacak olan ana sınıfın adını alır (bu durumda
DemoApplication.class). - İkinci parametre olarak,
mainmethodunun aldığı argümanları alır (bu durumdaargs).
O halde Spring Boot uygulamamızı başlatıp konsol çıktısına bir göz gezdirelim;

Bu konsol çıktısı, Spring Boot uygulamamızın başlatılması ve uygulamanın başlangıç süreci hakkında bilgi vermekte. Konsol çıktısına bir göz gezdirecek olursak;
- Uygulama Başlatıldı Mesajı:
Starting DemoApplication using Java 17.0.9 with PID 20092veStarted DemoApplication in 3.731 secondsgibi satırlar, uygulamanın başlatıldığını ve başlatma süresini gösterir.
- Profil Bilgisi:
No active profile set, falling back to 1 default profile: "default"satırı, aktif bir profil belirtilmediğinde varsayılan bir profilin kullanıldığını belirtir.
- Spring Data JPA ve H2 Database Ayarları:
Bootstrapping Spring Data JPA repositories in DEFAULT mode.veH2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:8041b9a5-e0dd-47cd-af3b-8d4d397f6c6f'gibi satırlar, Spring Data JPA ve H2 veritabanı ayarlarının yapıldığını gösterir.
- Hibernate ve EntityManagerFactory Başlatılması:
Hibernate ORM core version 6.4.1.FinalveInitialized JPA EntityManagerFactory for persistence unit 'default'gibi satırlar, Hibernate ve JPA EntityManagerFactory’nin başarıyla başlatıldığını gösterir.
- Uyarılar:
spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering.gibi satırlar, varsayılan davranışın belirli bir özelliğin etkinleştirildiğini ve bu nedenle dikkatli olunması gerektiğini belirtir.
- Tomcat Başlatılması:
Tomcat initialized with port 8080 (http)veTomcat started on port 8080 (http) with context path ''gibi satırlar, Tomcat’in başarıyla başlatıldığını ve belirtilen bağlantı noktası üzerinden istekleri dinlemeye hazır olduğunu gösterir.
Not: Konsol çıktınızı renklendirmek istiyorsanız, application.properties içerisine spring.output.ansi.enabled=always eklemeniz yeterli.
application.properties dosyası veya daha yaygın olarak kullanılan application.yml dosyası aracılığıyla Spring Boot uygulamasının çeşitli ayarlarını değiştirebilirsiniz. Serinin ilerleyen kısımlarında bu özelleştirmelere detaylı olarak değineceğim fakat özet olması açısından tanımlayabileceğimiz özellikleri sıralamak istiyorum:
server.port=8081
# OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE
logging.level.root=INFO
logging.level.org.springframework=DEBUG
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
Yukarıdaki örneklerde gösterilen ayarlar, application.properties dosyasında belirlenebilecek yapılandırma seçenekleridir. Sizler de kendi Spring Boot projenizin gereksinimlerine göre bu dosyaya uygun ayarları ekleyebilirsiniz. Ayarları ekledikten veya güncelledikten sonra, Spring Boot uygulamanızı yeniden başlatarak değişikliklerin etkili olmasını sağlayabilirsiniz.
Bu yazımda Spring Initializr ile nasıl proje oluşturacağımızı, projeyi oluşturduktan sonra Spring Boot uygulamasının giriş noktasını temsil eden Application.java class inceleyerek projemizi ayağı kaldırdık.
Sorularınız için yorum bırakabilir veya buraya tıklayarak benimle iletişime geçebilirsiniz.
İyi çalışmalar dilerim.