Spring, web uygulamaları için popüler olan Java framework’lerinden biridir. Yazılım geliştirmede pozisyonları için yapılan görüşme sırasında sizden bu teknolojiyle ilgili soruları yanıtlamanızı da isteyebilir.
Bu yazımızda, teknik mülakattan önce bakabileceğiniz Spring mülakat sorularını listeledik.
🕵️ Spring mülakatlarına hazırlanırken Java mülakat sorularına da bakmanız size fayda sağlayabilir.
En Sık Sorulan Spring Mülakat Soruları ve Cevapları
1. Spring framework nedir?
Spring, Java platformlarını kullanarak çeşitli uygulama türlerinin geliştirilmesine yardımcı olan bir framework’tür. Basit ve kullanımı kolaydır. Gerçek zamanlı teknik sorunların çözülmesine yardımcı olur. Spring, WEB MVC, IOC, DAO, AOP, Context ve ORM gibi birden fazla modül içerir.
2. Spring Framework'te kaç modül var ve bunlar nelerdir?
Spring, farklı modüllerden oluşur ve her bir modül belirli bir geliştirme alanına odaklanır. Spring, yaklaşık 20 modül halinde düzenlenmiş özelliklerden oluşur.
Spring framework, core, beans, context, expression language, AOP, Aspects, Instrumentation, JDBC, ORM, OXM, JMS, Transaction, Web, Servlet, Struts vb. gibi birçok modülden oluşur.
Bu modüller, aşağıdaki şemada gösterildiği gibi Core Container, Data Access/Integration, Web, AOP (Aspect Oriented Programming), Instrumentation, ve Test olarak gruplandırılmıştır. 👇
3. Spring yapılandırma dosyası nedir?
Spring yapılandırma dosyası, .xml uzantılı, sınıflar ve arayüzler ile ilgili bilgileri içeren XML dosyasıdır. Bu dosya, sınıfların nasıl yapılandırıldığını ve birbirlerine nasıl tanıtıldığını açıklar.
Spring yapılandırma dosyası, Spring Framework'ün Inversion of Control (IoC) prensibi ve bağımlılık enjeksiyonu mekanizmasını kullanarak uygulamanın bileşenlerini yönetmesine yardımcı olur.
4. Bir projede birden fazla Spring yapılandırma dosyasına olabilir mi?
Büyük projelerde, sürdürülebilirliği ve modülerliği artırmak için birden fazla Spring konfigürasyonuna sahip olunması önerilir.
👇 Birden fazla Java tabanlı konfigürasyon dosyası yüklenebilir:
👇 Tüm yapılandırmaları içerecek bir XML dosyası yüklenebilir:
5. Spring’in farklı bileşenleri nelerdir?
Spring uygulamaları genellikle farklı amaçlara hizmet eden, farklı tipte bileşenler içerir. Bir Spring uygulaması genel olarak aşağıdaki bileşenlerden oluşur:
- ✔️ Interface: Fonksiyonları tanımlar.
- ✔️ Bean class: Spring'in temel bileşeni olan Bean class, özellikleri ve işlevleri içerir.
- ✔️ Spring Aspect Oriented Programming (AOP): Kesişen konuların işlevselliğini sağlar.
- ✔️ Bean Configuration File: Sınıfların bilgilerini ve bunların nasıl yapılandırılacağını içerir.
- ✔️ User Program: Fonksiyonları kullanır.
6. Spring framework nasıl yüklenir?
1️⃣ Spring’i indirmek için Spring resmi web sitesine gidin.
2️⃣ Web sitesinde Spring’in farklı sürümlerini bulacaksınız. En son framework sürümüne tıklamayın. Burada üç dosya bulacaksınız:
- spring-framework-5.1.4.RELEASE-dist.zip
- spring-framework-5.1.4.RELEASE-docs.zip
- spring-framework-5.1.4.RELEASE-schema.zip
3️⃣ Kurulum için “spring-framework-5.1.4.RELEASE-dist.zip” dosyasını C sürücünüze ekleyin. Artık uygulamanızı Spring framework’te çalıştırabilirsiniz.
7. Spring Security nedir?
Spring Security, Spring framework’ün Java uygulamalarında, kimlik doğrulama ve yetkilendirme işlemlerine odaklanan bir modülüdür. CSRF saldırıları gibi yaygın güvenlik açıklarının çoğunu giderir.
👉 @EnableWebSecurity ek açıklamasıyla Spring Security'i web uygulamalarında kullanabilirsiniz.
8. Spring IOC Container nedir?
Spring IoC Container, Spring Framework'ün çekirdeğidir. Bu konteyner, nesneleri oluşturur, nesneleri birbirine bağlar, bağımlılıklarını yapılandırır ve tüm yaşam döngüsünü yönetir.
Spring konteyneri, bir uygulamayı oluşturan bileşenleri yönetmek için Dependency Injection'ı kullanır. Nesneler hakkındaki bilgileri bir yapılandırma dosyasından (XML), Java kodundan veya Java POJO sınıfından alır. Bu nesnelere bean denir.
9. Spring’de Dependency Injection (bağımlılık enjeksiyonu) nedir?
Bağımlılık Enjeksiyonu (DI), uygulamayı yönetmeyi ve test etmeyi kolaylaştıracak şekilde programlama kodundaki bağımlılığı ortadan kaldıran bir tasarım modelidir.
Dependency Injection, programlama kodunun gevşek bir şekilde bağlanmasını ve daha kolay test etmeyi sağlar.
10. Spring MVC Dependency Injection türleri nelerdir?
1️⃣ Constructor Injection (Yapıcı Metot Enjeksiyonu): Yapıcı enjeksiyon türünde bağımlılıklar bir sınıfın yapıcısı aracılığıyla enjekte edilir. Nesne oluşturulduğunda gerekli tüm bağımlılıkların mevcut olmasını sağladığı için Spring tarafından önerilen bir yöntemdir.
2️⃣ Setter Injection (Ayarlayıcı Enjeksiyonu): Setter enjeksiyonunda bağımlılıklar, setter yöntemleri kullanılarak enjekte edilir.
3️⃣ Field Injection (Alan Enjeksiyonu): Alan enjeksiyonunda bağımlılıklar doğrudan sınıf alanlarına enjekte edilir. Gerekli bağımlılıkların ve test edilebilirliğin uygulanmasını zorlaştırdığı için en az tercih edilen yöntemdir.
11. IoC container ne işe yarar? Faydaları nelerdir_
IoC konteynerinin gerçekleştirdiği ana görevler şunlardır:
✅ Uygulama sınıfını başlatma,
✅ Nesneyi yapılandırma,
✅ Nesneler arasındaki bağımlılıkları bir araya getirme.
IoC'nin faydalarından bazıları şunlardır:
✅ Uygulamadaki kod miktarını en aza indirir.
✅ Uygulamanın test edilmesini kolaylaştırır.
✅ Minimum çaba ile gevşek bağlantıyı destekler. Nesneler arasındaki sıkı bağlantıyı azaltır. Bu da, sistemin daha esnek ve değişime dayanıklı hale gelmesini sağlar.
12. Kaç çeşit IoC container vardır?
İki tür IoC konteyneri vardır:
1️⃣ BeanFactory: Spring'de tanımlanan ve yönetilen nesneleri (bean'leri) oluşturma, konfigüre etme ve yönetme işlevlerini sağlar. BeanFactory, özellikle büyük ve karmaşık uygulamalarda, bean'leri gecikmeli (lazy) veya önceden yaratılmış (pre-instantiated) olarak oluşturmanıza, bu bean'lerin yaşam döngüsünü yönetmenize ve bağımlılık enjeksiyonunu gerçekleştirmenize olanak tanır.
XmlBeanFactory, BeanFactory arayüzünün uygulama sınıfıdır. BeanFactory’yi kullanabilmek için XmlBeanFactory sınıfı kullanılır.👇
2️⃣ ApplicationContext: ApplicationContext arayüzü, BeanFactory arayüzünün üzerine inşa edilmiştir. BeanFactory'nin üstünde bazı ekstra işlevler oluşturmayı sağlar.
ClassPathXmlApplicationContext sınıfı, ApplicationContext arayüzünün uygulama sınıfıdır. ApplicationContext'i kullanabilmek için ClassPathXmlApplicationContext sınıfını aşağıda verildiği gibi başlatmanız gerekir. 👇
13. Spring @Controller nedir?
@Controller, Spring Framework'te bir sınıfı denetleyici bileşen olarak işaretlemek için kullanılır. Web uygulamalarını yapılandırılmış bir şekilde oluşturmak için kullanılan Spring MVC (Model-View-Controller) mimarisinin bir parçasıdır.
@Controller, bir sınıfın Spring MVC'de bir denetleyici (controller) olarak işlev görmesini sağlar. Denetleyiciler, istemciden gelen talepleri alır, işler ve sonuç olarak bir görünüm (view) döndürür.
Bir sınıfa @Controller ile açıklama eklediğinizde, Spring onu bir denetleyici olarak tanır. HTTP isteklerini işlemesine ve HTTP yanıtları oluşturmasına izin verir. Denetleyiciler, kullanıcı isteklerini işlemekten, uygulamanın iş mantığıyla (hizmetler) etkileşim kurmaktan ve yanıtı oluşturmak için uygun görünümü döndürmekten sorumludur. Spring Controller ek açıklaması genellikle @RequestMapping ek açıklamasına dayalı açıklamalı işleyici yöntemleriyle birlikte kullanılır.
📍 Örnek bir @Controller sınıfı:
14. Spring @RestController nedir?
👉 @RestController ek açıklaması RESTful web servislerini oluşturmak için kullanılır. @RestController sınıfları, @Controller sınıflarına benzer bir şekilde çalışır. Ancak, @Controller'dan farklı olarak her metot çağrısı varsayılan olarak verileri JSON veya XML formatında döndürmek üzere optimize edilmiştir.
15. Spring @ResponseStatus nedir?
@ResponseStatus, HTTP yanıt durumu (HTTP response status) ile ilişkilendirilmiş bir denetleyici metodu veya istisna sınıfı için kullanılır. @ResponseStatus bir yöntemi veya istisna sınıfını, döndürülmesi gereken durum kodu ve mesajıyla birlikte işaretlemeyi sağlar.
16. ContextLoaderListener nedir ve ne işe yarar?
✔️ ContextLoaderListener, Java web uygulamalarında, web uygulaması başlatıldığında Spring uygulama içeriğini yüklemek için kullanılan bir Spring Framework bileşenidir.
✔️ IoC konteynerini başlatmaya, bean’leri yönetmeye ve bileşenlerin işlenmek üzere Spring bean’e erişmesine yardımcı olur.
17. Spring RequestParam nedir?
@RequestParam ek açıklaması, Spring'in sorgu, form verileri veya herhangi bir isteğe bağlı özel veri olarak iletilebilecek giriş verilerini çıkarmasını sağlar.
Form verilerini okumak ve bunu otomatik olarak sağlanan yöntemde bulunan parametreye bağlamak için kullanılır. Form verileri de dahil olmak üzere istek parametresini, çok parçalı isteklerdeki sorgu parametresi ve parçalarla eşleştirir.
18. String @PathVariable nedir?
@PathVariable, bir yöntem parametresinin bir URI şablon değişkenine bağlanması gerektiğini belirten bir Spring ek açıklamasıdır.
@PathVariable, Spring Framework'ün bir anotasyonudur. @PathVariable sayesinde, dinamik URL yapıları kullanarak örneğin tek bir denetleyici metodu içerisinde farklı öğeleri işleyebilirsiniz.
📍 Bu örnekte bulunan {id} ifadesi bir path variable'ı temsil eder.
19. Spring @Autowired nedir?
Spring @Autowired anotasyonu, bağımlılıkları otomatik olarak bir Spring bean’e bağlamak (enjekte etmek) için kullanılır. Otomatik bağımlılık enjeksiyonunu etkinleştirir. Yani, manuel yapılandırmaya gerek kalmadan gerekli bağımlılıkları otomatik olarak bulup enjekte eder.
20. Spring @ModelAttribute nedir?
Spring MVC'deki @ModelAttribute anotasyonu, bir metodun çağrılması sırasında gönderilen bir nesnenin kullanılmasını sağlar. Yöntem parametrelerini model niteliklerine bağlamak için kullanılır.
Model-Görünüm-Denetleyici (MVC) mimarisinde, denetleyici ile görünüm arasında veri aktarımına yardımcı olur. Denetleyici ve görünüm arasındaki veri aktarımını kolaylaştırır.
21. @Repository ek açıklamasının önemi nedir?
Spring'deki @Repository anotasyonu, bir veri deposu veya DAO (Veri Erişim Nesnesi) rolünü yerine getiren sınıflar için bir işaretleyici görevi gören ek açıklamadır. Sınıfın bir veri tabanından veya herhangi bir dış veri kaynağından okuma ve yazma gibi veri erişim işlemlerinden sorumlu olduğunu belirtmek için kullanılır.
22. BindingResults nedir?
BindingResult, Spring MVC'de veri bağlamak ve bu verileri doğrulamak için kullanılır. BindingResults’un sağladığı avantajlar şunlardır:
✅ Form gönderimi sırasında oluşan hataları yakalar.
✅ İstisnaların önlenmesine yardımcı olur.
23. Spring Interceptor nedir?
Spring Interceptors, Spring MVC çerçevesindeki, HTTP isteklerini ve yanıtlarını kesmeye ve işlemeye olanak tanıyan bileşenlerdir. Müşteri isteklerini engellemek ve bunları işlemek için kullanılır.
Bazen HTTP isteğini durdurmak ve onu denetleyici işleyici yöntemlerine aktarmadan önce üzerinde bazı işlemler yapılmak istenebilir. Bu tarz durumlarda, Spring MVC Interceptor kullanılır.
24. <context:annotation-config> ile <context:component-scan> etiketleri arasındaki farklar nelerdir?
👉 <context:annotation-config>: Spring tarafından yönetilen bean’lerdeki çeşitli açıklamaları etkinleştirmek için kullanılır. Örneğin, XML dosyanızda manuel olarak tanımlanmış bean’ler varsa ve bu bean’lerin @Autowired, @PostConstruct, @PreDestroy, @Resource vb. gibi ek açıklamaları varsa, bu ek açıklamaları etkinleştirmek için <context:annotation-config> kullanılır.
👉 <context:component-scan>: Bu etiket, <context:annotation-config>'in yaptığı her şeyden farklı olarak, @Component, @Service, @Repository ve @Controller ile açıklamalı sınıflar için sınıf yolunu tarar ve bunları otomatik olarak bean olarak kaydeder. Yani, bean’leri otomatik olarak algılar ve başlatır.
25. Spring MultipartResolver nedir?
➡️ MultipartResolver, dosyaları yüklemek için kullanılan Spring MVC’de tanımlanmış bir arayüzdür. Spring web uygulamasında bir form gönderildiğinde ve enctype=”multipart/form-data” değerine sahip olduğunda, MultipartResolver isteğin dosyaya yüklenmesini sağlar.
26. Spring @Required nedir?
Bir bean sınıfının belirli bir özelliğinin (property) zorunlu olarak ayarlanması gerektiğini ifade etmek için kullanılır. Eğer @Required anotasyonu ile işaretlenmiş bir özellik değeri ayarlanmamışsa veya null olarak bırakılmışsa, Spring başlatma aşamasında bir istisna fırlatır.
27. Spring @Qualifier nedir?
@Qualifier, aynı türden birden fazla bean oluşturulduğunda ve bunlardan yalnızca biri bir özelliğe bağlanmak istenildiğinde kullanılır. Tam olarak hangi bean’in bağlanması gerektiğini belirlemeyi sağlar. @Qualifier ek açıklaması @ Autowired ile birlikte kullanılabilir.
Spring Kariyerinize Başlayın
Spring, geniş bir topluluk tarafından kullanılan popüler bir framework'tür. Spring konusunda bilgi sahibi olmak, iş bulma ve kariyer olanaklarınızı artırabilir.
Yeni başlıyorsanız Spring Bootcamp’lerine katılabilir ve kendinizi geliştirebilirsiniz. Zaten halihazırda yılların deneyimine sahip bir geliştiriciyseniz, Coderspace’e üye olabilir ve sizin için doğru işi bulmanızı sağlayabiliriz.