📚 Java Spring Boot Framework Vize ve Final Sınavlarına Hazırlık
Spring Boot, Java tabanlı kurumsal uygulamalar geliştirmek için yaygın olarak kullanılan bir framework'tür. Bu yazıda, Spring Boot sınavlarına hazırlanırken karşılaşabileceğiniz olası soru tiplerine ve dikkat etmeniz gereken konulara değineceğiz.
📌 Temel Kavramlar
- 🚀 Dependency Injection (DI): Bağımlılıkların dışarıdan verilmesi prensibidir. Spring, bu işlemi otomatik olarak gerçekleştirir.
- ⚙️ Inversion of Control (IoC): Kontrolün tersine çevrilmesi anlamına gelir. Nesnelerin oluşturulması ve yönetimi Spring Container tarafından yapılır.
- 🛡️ AOP (Aspect-Oriented Programming): Uygulamanın farklı bölümlerine ortak davranışları (logging, güvenlik vb.) eklemeyi sağlar.
📌 Spring Boot Temel Annotasyonları
- 📍 @SpringBootApplication: Spring Boot uygulamasının ana sınıfını işaretler. `@Configuration`, `@EnableAutoConfiguration`, ve `@ComponentScan` annotasyonlarını içerir.
- 🔗 @RestController: RESTful servisler oluşturmak için kullanılır. `@Controller` ve `@ResponseBody` annotasyonlarını birleştirir.
- 📦 @RequestMapping: HTTP isteklerini belirli metotlara yönlendirir.
- 🧩 @Autowired: Bağımlılıkları otomatik olarak enjekte eder.
- 🗄️ @Repository: Veritabanı işlemlerini gerçekleştiren sınıfları işaretler.
- 🛠️ @Service: İş mantığını içeren sınıfları işaretler.
- ⚙️ @Component: Spring tarafından yönetilen genel amaçlı bir bileşeni işaretler.
📌 Sıkça Sorulan Sorular ve Çözüm Önerileri
❓ Spring Boot'un avantajları nelerdir?
- 🌱 Hızlı Geliştirme: Otomatik yapılandırma sayesinde hızlıca uygulama geliştirmeye başlanabilir.
- 📦 Bağımlılık Yönetimi: Spring Boot, bağımlılıkları otomatik olarak yönetir (starters).
- 🚀 Kolay Dağıtım: Gömülü sunucular sayesinde kolayca dağıtılabilir (örneğin, Tomcat, Jetty).
- 🧩 Mikroservisler: Mikroservis mimarisi için idealdir.
❓ Spring Bean nedir ve nasıl tanımlanır?
Spring Bean, Spring IoC container tarafından yönetilen bir nesnedir. Aşağıdaki yöntemlerle tanımlanabilir:
- 🏷️ @Component, @Service, @Repository, @Controller annotasyonları ile.
- ⚙️ @Bean annotasyonu ile bir `@Configuration` sınıfı içinde.
❓ Spring Data JPA nedir?
Spring Data JPA, JPA (Java Persistence API) kullanarak veritabanı işlemlerini kolaylaştıran bir Spring modülüdür. Repository arayüzleri tanımlayarak, CRUD (Create, Read, Update, Delete) işlemlerini kolayca gerçekleştirebilirsiniz.
❓ AOP (Aspect-Oriented Programming) nedir ve Spring'de nasıl kullanılır?
AOP, uygulamanın farklı bölümlerine ortak davranışları (logging, güvenlik vb.) eklemeyi sağlayan bir programlama yaklaşımıdır. Spring'de AOP, `@Aspect` annotasyonu ile tanımlanan sınıflar ve `@Before`, `@After`, `@Around` gibi advice annotasyonları ile kullanılır.
❓ RESTful servis nedir ve Spring Boot ile nasıl oluşturulur?
RESTful servis, HTTP protokolü üzerinden kaynaklara erişimi sağlayan bir web servisidir. Spring Boot ile `@RestController` annotasyonu ve `@RequestMapping`, `@GetMapping`, `@PostMapping` gibi HTTP metotlarına özel annotasyonlar kullanılarak oluşturulur.
Örnek:
java
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
// Kullanıcıyı bul ve döndür
}
}
❓ Spring Security nedir ve nasıl kullanılır?
Spring Security, Java uygulamalarına kimlik doğrulama (authentication) ve yetkilendirme (authorization) mekanizmaları eklemek için kullanılan bir framework'tür. Spring Boot ile entegre edilerek kolayca kullanılabilir. Temel olarak, `WebSecurityConfigurerAdapter` sınıfını genişleterek ve gerekli yapılandırmaları yaparak güvenlik ayarları tanımlanır.
📌 Örnek Vize/Final Soruları
- Spring Boot Auto Configuration'ı açıklayınız.
- Dependency Injection (DI) ve Inversion of Control (IoC) kavramlarını karşılaştırınız.
- Spring Data JPA kullanarak basit bir CRUD operasyonu gerçekleştiriniz.
- Aşağıdaki Spring Boot annotasyonlarının görevlerini açıklayınız: `@SpringBootApplication`, `@RestController`, `@Autowired`.
- Bir REST endpoint'i oluşturarak, gelen isteği karşılayıp JSON formatında veri döndüren bir örnek kod yazınız.
📌 Matematiksel İfadeler İçeren Örnek Soru
Aşağıdaki matematiksel ifadeyi Spring Expression Language (SpEL) kullanarak nasıl ifade edersiniz?
$x^2 + \sqrt{y} = 25$
Cevap:
`#{T(java.lang.Math).pow(x,2) + T(java.lang.Math).sqrt(y) == 25}`
📌 Ek Kaynaklar
- 🔗 Spring Boot Resmi Dokümantasyonu: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot)
- 📚 Spring Data JPA Dokümantasyonu: [https://spring.io/projects/spring-data-jpa](https://spring.io/projects/spring-data-jpa)
- 🛡️ Spring Security Dokümantasyonu: [https://spring.io/projects/spring-security](https://spring.io/projects/spring-security)