Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 12335|Yanıt: 0

[JavaEE] Bahar @Bean ve @Service açıklamaları arasındaki fark

[Bağlantıyı kopyala]
Yayınlandı 30.08.2018 13:29:41 | | |
Bugün meslektaşlarımla Spring Boot'ta fasulye oluşturmak için @Configuration ve @Bean kombinasyonunu mı kullanmalıyım yoksa @Service ve diğer açıklamaları doğrudan sınıfta mı kullanmalı olacağımızı konuştum. Yazar genellikle ilkini, yani @Configuration ve @Bean kombinasyonunu kullanır.

Önce bir örneme bakalım, amaç SearchService için bir çekirdek yaratmaktır.

Doğrudan @Service kullanın:




Uygulamayı başlat, tarayıcı erişimi: http://localhost:8081/search?q=koly, sayfa gösterimi: ["merhaba", "koly"]

@Configuration ve @Bean kullanma yolları:






@Service kodu doğrudan kullanmaya kıyasla, ElasticSearchServiceImpl'in üstüne yerleştirilen @Service açıklamaları kaldıran bir AppConfig sınıfı vardır. İlk bakışta daha fazla kod ve ders var. Peki ikincisini kullanmanın faydaları nelerdir?

Yazar, faydaların şunlar olduğuna inanıyor:

Şirketlerin ayrılması

@Configuration ve @Bean yöntemleri kullanılarak, fasulye üretimi tek bir yerde yapılır ve arayüz ile uygulaması fasulye üretimiyle hiçbir ilgisi yoktur.

Eğer çekirdek oluşturma işlemi değiştirilmesi gerekiyorsa, sadece ilgili Yapılandırma sınıfını görmeniz ve değiştirmeniz yeterlidir ve değişiklik yapmak için ilgili Java bean'e gitmenize gerek yoktur. Örneğin, bazen çekirdek oluşturma @Scope veya @Profile ile işbirliği yapmak zorunda kalır ve sadece Yapılandırma sınıfını değiştirmek gerekir.

Tek görev

@service açıklamasının kendisi iki sorumluluğu üstlenir:

Biri fasulye üretimi;
İkincisi ise bir sınıfı hizmet olarak tanımlamaktır.
Açıklamalı bir sınıfın "Hizmet" olduğunu, başlangıçta Alan Odaklı tarafından tanımlandığını gösterir

Design (Evans, 2003) "modelde tek başına duran bir arayüz olarak sunulan bir işlem" olarak tasarlanmıştır, kapsüllenmiş bir durum yoktur.

Yukarıda Spring'in @Service açıklamaları yer almaktadır. Bu is@Service aslında DDD'de durumsuz, bağımsız bir arayüz işlemini temsil eder.

@Bean ve @Configuration iş birliği kapsamında, fasulye üretimi ayrı bir sınıfa devredilir ve Hizmet kimliği Java'daki arayüz ve sınıf adına verilir. Bu, Spring Data'da da yansımaktadır; örneğin CrudRepository gibi isimle tanımlanır. Bu nedenle, hizmet adı da bu isimle yansımaktadır. Özel hiyerarşi tanımları, Spring tarafından sağlanan Mapper katmanı, Validator katmanı gibi annotasyonlara (örneğin Mapper katmanı, Validator katmanı vb.) bağımlı olmadan projeye isimle göre daha fazla katman sağlamak için kullanılabilir.

Ayrıca, fasulye ve servis iki boyutlu kavramlardır. Biri somut uygulama, diğeri ise DDD'deki kavramlar hakkında.

Daha esnek

@Bean yöntemleri kullanarak kütüphanede sınıf örnekleri oluşturabilirsiniz. @Service yöntemini kullanırsanız, kütüphanedeki ilgili sınıflara @Service yorum ekleyemezsiniz.

En Az bilgi

Minimum bilgi ilkesi şu anlam taşır:

Fonksiyonu tamamlamak için gereken teknoloji veya bilgi ne kadar az olursa, o kadar iyi olur; böylece projenin sadeliği sağlanır ve öğrenmenin zorluğunu azaltır.

@Service kullanarak sınıf kütüphanesinde sınıf örnekleri oluşturmak mümkün olmadığından, benzer ihtiyaçlarla karşılaşıldığında @Configuration ve @Bean biçimlerini kullanmanız gerekir. Bu noktada, tüm projede @Service, @Configuration ve @Bean gibi açıklamalar var ve bu açıklamalar aynı şeyi yapar, yani fasulyeyi oluşturur.

@Service ile aynı anda @Service, @Component, @Configuration ve @Bean olasılığı yüksektir.

@Configuration ve @Bean kullanımı ise @Service ve @Component kullanımını tamamen ortadan kaldırabilir; bu da minimum bilgi ilkesine uygundur.

Son olarak, Spring beans xml'de oluşturuldu ve daha sonra yapılandırma için Java kullanıldı. XML kullanmamanın ana nedeni, yeterince kısa olmaması ve derleme zamanı kontrolü gibi özelliklerin olmaması, çekirdek üretimini sınıflar arasında dağıtma ihtiyacının olmamasıdır.

Özetle, yazar @Configuration ve @Bean yöntemlerini tercih eder.




Önceki:Python komut satırından ekranı temizlemenin basit bir yolu
Önümüzdeki:Dağıtılmış kilitleri kullanmanın birkaç yolu (redis, hayvanat bahçesi görevlisi, veritabanı)
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com