![]() |
Servlet ve Spring IOC Kullanımı Bu yazımda, Java ve özellikle Java EE uygulamalarında sunduğu Dependency Injection, Transaction Management, AOP gibi birçok teknolojiyi basitleştirerek kullanmamıza olanak veren Spring Frameworkü, Java Servletler içerisinde nasıl kullanacağımızı anlatan birkaç önemli ipucuna değineceğim. Bildiğiniz gibi Spring en temelde, POJO adını verdiğimiz Java classlarını kendi IOC containerı içerisinde yöneterek, uygulama bileşenlerinin bağımlılıklarını (dependencies) kontrol etmemize olanak veriyor. Dependency Injection adını verdiğimiz bu mekanizma sayesinde, sınıfların (servislerin) diğer sınıflara ya da servislere olan bağımlılıkları çok daha yönetilebilir oluyor. Bu yazının konusu Dependency Injection ve bunun sağladığı yararlar ve faydalar olmadığı için bu konuya derinlemesine değinmeyeceğim. Yazının konusu, Spring’in en temelde sağladığı bu mekanizmayı, Java Servletler içerisinde nasıl kullanabileceğimizi kapsıyor. Bildiğiniz gibi Java Servletler, bir Servlet Container tarafından instantiate edildiği için, Spring tarafından yönetilemezler. Spring, yönetemediği yani bir Spring Bean olmayan sınıflarda dependency injection gerçekleştiremez. Peki Spring’in sunduğu bu özellikleri Java servletlerimizde nasıl kullanacağız? İşte bu yazıda servletleri bir Spring bean gibi nasıl kullanabileceğimizi ve bu sayede Spring’in sunduğu teknolojileri nasıl entegre edebileceğimizi gösteren birkaç noktaya değineceğim. Bu sürecin tam 4 farklı yöntemi mevcut ( En azından benim bildiğim). Örneklere geçmeden önce, öncelikle neyi başarmak istediğimizi gösteren ufak bir senaryo hazırlamak istiyorum. Öncelikle Spring bean olarak bir business sınıfımız olduğunu varsayalım. Ve bunu da aşağıdaki gibi tanımlayalım. Interface şu şekilde. Kod: public interface IMyBusiness { Kod: @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ponent Artık yöntemlerimize geçebiliriz. 1 ) Spring HttpRequestHandler Interface kullanımı. Springin sunduğu bu interface sayesinde, doğrudan HTTP isteklerini işleyebiliyoruz. Bunun için servlet oluştururken HttpServlet sınıfını extend etmemize de gerek yok. Oluşturduğumuz POJO sınıfı sadece HttpRequestHandler interfacesini implement etmesi yeterli. Kod: @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ponent("javaBlogRequestHandler") Kod: <servlet> 2 ) processInjectionBasedOnServletContext Yöntemi Her ne kadar üstteki 1. yöntem en basiti gibi görünse de bazen HttpServlet sınıfını extend eden sınıflarda ya da daha önceden varolan servletlerimizde Spring teknolojilerini kulanmak isteyebiliriz. Bu gibi durumlar için Spring’in SpringBeanAutowiringSupport utility classı ile varolan servletimizi, Spring tarafından farkında olacak şekilde refactor edebiliyoruz. Kod: @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ervlet(name = "JavaBlogServletPlain", urlPatterns = {"/JavaBlogServletPlain"}) Yine HttpServlet sınıfını extend ederek oluşturduğumuz servlet sınıflarımızın Spring teknolojilerini kullanmamız için Spring’in WebApplicationContext’ine servletimizi de tanıtmamız gerekiyor. Bunun için yine Spring’in context utility sınıflarını kullanıyoruz. Kod: @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ervlet(name = "JavaBlogServletPlain", urlPatterns = {"/JavaBlogServletPlain"}) Yine HttpServlet türü servletlerimiz için, Spring’in Web Application Context içerisinden Business nesnemizi manuel olarak çağırabiliriz. Tabi bu yöntemle servletimize inject edeceğimiz beanleri @Autowired ile deklare edemiyoruz. Bunun yerine Spring contextden, inject etmek istediğimiz Spring Beanleri doğrudan çağırıp referansa atama yapıyoruz. Kod: @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ervlet(name = "JavaBlogServletPlain", urlPatterns = {"/JavaBlogServletPlain"}) Alıntı |
Cevap: Servlet ve Spring IOC Kullanımı IOC, Spring'e has bir özellik değildir sadece bir yaklaşımdır. Temelinde ise, bağımlılık zerkeden sınıfların yaratılma safhasının geliştirici tarafından değilde framework tarafından sağlanmasıdır. Bu geliştiriciye mükemmel bir rahatlık sağlar. Çünkü siz bir service'i ayağa kaldırmak istediğinizde bunu new operatör yardımıyla yaparsınız fakat framework size yeni bir instance yaratmadan framework'ün injection yeteneği sayesinde Spring içinde @Autowired(service katmanı için) anotasyonu ile tanımlamanız yeterli olur. Instance'ı ayağa kaldırma olayını framework üstlenmiş olur ;) Kısaca temelde budur. |
Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 10:40. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk