─░lkbaharda @Component, @Repository & @Service ek a├ž─▒klamalar─▒ aras─▒ndaki fark nedir?


Al─▒nan cevaba git


Can @Component , @Repository ve @Service ek a├ž─▒klamalar ilkbaharda birbirinin yerine kullan─▒labilir veya bir g├Âsterim ayg─▒t─▒ olarak hareket yan─▒ s─▒ra herhangi bir i┼člevsellik sa─člar?

Bir Servis s─▒n─▒f var ve ben den ek a├ž─▒klama de─či┼čtirirseniz Ba┼čka bir deyi┼čle, @Service i├žin @Component , hala ayn─▒ ┼čekilde davranacakt─▒r?

Yoksa not ayr─▒ca s─▒n─▒f─▒n davran─▒┼č─▒n─▒ ve i┼člevselli─čini de etkiler mi?


1948









Cevap say─▒s─▒n─▒ say: 27






G├Ânderen Bahar Belgeler :

─░lkbahar 2.0 ve sonras─▒nda, @Repository ek a├ž─▒klama, havuzun rol├╝n├╝ veya kli┼česini (Veri Eri┼čim Nesnesi veya DAO olarak da bilinir) yerine getiren herhangi bir s─▒n─▒f i├žin bir i┼čaretleyicidir. Bu i┼čaretleyicinin kullan─▒mlar─▒ aras─▒nda istisnalar─▒n otomatik ├ževirisi de bulunur.

Bahar 2.5 daha kli┼če ek a├ž─▒klamalar @Component , @Service ve @Controller . @Component herhangi bir Spring taraf─▒ndan y├Ânetilen bile┼čen i├žin genel bir kli┼čedir. @Repository , @Service ve daha ├Âzel kullan─▒m durumlar─▒ i├žin, ├Ârne─čin ─▒srarc─▒l─▒k, hizmet ve sunum katmanlar─▒ @Controller gibi uzmanl─▒k alanlar─▒d─▒r @Component .

Bu nedenle, birlikte bile┼čen s─▒n─▒flar─▒ a├ž─▒klama olabilir @Component , ama onlara ek a├ž─▒klamalar yaparak @Repository , @Service ya @Controller bunun yerine, dersleriniz daha d├╝zg├╝n ara├žlar─▒ taraf─▒ndan i┼členmesi veya y├Ânleriyle ili┼čkilendirerek i├žin uygundur. ├ľrne─čin, bu stereotip ek a├ž─▒klamalar─▒ nokta kesimleri i├žin ideal hedefler olu┼čturur.

Bu nedenle, servis katman─▒n─▒z─▒ kullanmay─▒ @Component veya @Service servis katman─▒n─▒ tercih ediyorsan─▒z @Service , kesinlikle daha iyi bir se├žimdir. Benzer ┼čekilde, yukar─▒da belirtildi─či gibi, @Repository kal─▒c─▒l─▒k katman─▒n─▒zda otomatik istisna ├ževirisi i├žin bir i┼čaretleyici olarak zaten desteklenir.

 ÔöîÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöČÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÉ
Ôöé Annotation Ôöé Meaning                                             Ôöé
ÔöťÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔö╝ÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöĄ
Ôöé @Component Ôöé generic stereotype for any Spring-managed component Ôöé
Ôöé @RepositoryÔöé stereotype for persistence layer                    Ôöé
Ôöé @Service   Ôöé stereotype for service layer                        Ôöé
Ôöé @ControllerÔöé stereotype for presentation layer (spring-mvc)      Ôöé
ÔööÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔö┤ÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöś
 

1423







Yan─▒tlar─▒n ├žo─ču zaten bu ek a├ž─▒klamalar─▒n ne i├žin kullan─▒ld─▒─č─▒n─▒ belirtti─činden, burada aralar─▒ndaki baz─▒ k├╝├ž├╝k farkl─▒l─▒klara odaklanaca─č─▒z.

─░lk olarak benzerlik

Tekrar vurgulanmaya de─čer ilk nokta, otomatik tarama taramas─▒ ve BeanDefinition i├žin ba─č─▒ml─▒l─▒k enjeksiyonuna g├Âre t├╝m bu ek a├ž─▒klamalar─▒n (viz., @Component, @Service, @Repository, @Controller) ayn─▒ olmas─▒d─▒r. Birini di─čerinin yerine kullanabiliriz ve yine de yolumuza devam edebiliriz.


@Component, @Repository, @Controller ve @Service aras─▒ndaki farklar

@Bile┼čen

Bu, s─▒n─▒f─▒n bir yay bile┼čeni oldu─čunu g├Âsteren genel ama├žl─▒ bir kli┼če notudur.

@Component ne ├Âzelli─či var
<context:component-scan> sadece tarar @Component ve aramaz @Controller , @Service ve @Repository genel olarak. Taran─▒rlar ├ž├╝nk├╝ kendileriyle a├ž─▒klamal─▒d─▒rlar @Component .

Sadece bir bakmakt─▒r @Controller , @Service ve @Repository a├ž─▒klama tan─▒mlar─▒:

 @Component
public @interface Service {
    ÔÇŽ.
}
 

 

 @Component
public @interface Repository {
    ÔÇŽ.
}
 

 

 @Component
public @interface Controller {
    ÔÇŽ
}
 

B├Âylece, s├Âylemek yanl─▒┼č de─čil @Controller , @Service ve @Repository ├Âzel t├╝rleri vard─▒r @Component a├ž─▒klama. <context:component-scan> onlar─▒ al─▒r ve a├ž─▒klamal─▒ym─▒┼č gibi izleyen s─▒n─▒flar─▒n─▒ fasulye gibi kaydeder @Component .

├ľzel t├╝r ek a├ž─▒klamalar da taran─▒r, ├ž├╝nk├╝ kendileri ek a├ž─▒klama ile @Component ek a├ž─▒klama al─▒rlar, yani bunlar da @Component s. Kendi ├Âzel ek a├ž─▒klamam─▒z─▒ tan─▒mlay─▒p eklersek eklersek @Component , ayn─▒ zamanda taran─▒r. <context:component-scan>


@Repository

Bu, s─▒n─▒f─▒n bir veri deposu tan─▒mlad─▒─č─▒n─▒ belirtmek i├žindir.

@Repository'nin nesi ├Âzel?

Bunun Ek A├ž─▒klamaya dayal─▒ bir Yap─▒land─▒rma oldu─čunu belirtmenin yan─▒ s─▒ra , @Repository i┼čin platforma ├Âzel istisnalar─▒ yakalamak ve onlar─▒ Spring'in birle┼čik kontrol d─▒┼č─▒ istisnalar─▒ndan biri olarak tekrar atmak. Bunun i├žin, PersistenceExceptionTranslationPostProcessor Spring'in uygulama ba─člam─▒na ┼ču ┼čekilde eklemek zorunda oldu─čumuz belirtilmi┼čtir:

 <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
 

Bu fasulye post i┼člemcisi @Repository , platforma ├Âzel istisnalar yakalan─▒p Spring'in denetlenmemi┼č veri eri┼čim istisnalar─▒ndan biri olarak yeniden at─▒lmas─▒ i├žin a├ž─▒klamal─▒ herhangi bir fasulyeye bir dan─▒┼čman ekler .


@Controller

@Controller A├ž─▒klama ├Âzel bir s─▒n─▒f bir kontrol g├Ârevi g├Âr├╝r g├Âstermektedir. @Controller A├ž─▒klama rol├╝n├╝ g├Âsteren a├ž─▒klamal─▒ s─▒n─▒f i├žin bir kli┼če olarak hareket eder.

@Controller'─▒n ├Âzelli─či nedir?

Biz gibi di─čer bu ek a├ž─▒klama ge├žemezsiniz @Service ya @Repository da ayn─▒ g├Âr├╝n├╝r halde. Da─č─▒t─▒c─▒, a├ž─▒klama eklenmi┼č s─▒n─▒flar─▒ tarar ve i├žindeki ek @Controller a├ž─▒klamalarla eklenmi┼č y├Ântemleri alg─▒lar @RequestMapping . Biz kullanabilirsiniz @RequestMapping kimin s─▒n─▒flar not eklenmi┼č sadece bu y├Ântemlerde / ├╝zerinde @Controller ve onu edecektir DE─×─░L ├žal─▒┼čmak @Component , @Service , @Repository vs ...

Not: E─čer bir s─▒n─▒f zaten i├žinden @Bean veya i├žinden @Component , @Service etc ... ek a├ž─▒klamalar─▒ gibi alternatif bir y├Ântemle fasulye olarak kaydedilmi┼čse , o @RequestMapping zaman s─▒n─▒f ayr─▒ca ek a├ž─▒klamalarla da eklenmi┼čse se├žilebilir @RequestMapping . Ama bu farkl─▒ bir senaryo.


@Hizmet

@Service fasulye depodaki i┼č mant─▒─č─▒n─▒ ve ├ža─čr─▒ y├Ântemlerini tutar.

@Servis hakk─▒nda ├Âzel olan nedir?

─░┼č mant─▒─č─▒n─▒ tuttu─čunu belirtmek i├žin kullan─▒lmas─▒n─▒n d─▒┼č─▒nda, bu a├ž─▒klamada dikkat ├žekecek ba┼čka bir ┼čey yoktur; Ancak kim bilir, Bahar gelecekte baz─▒ istisnai durumlar ekleyebilir.


Ba┼čka?

Yukar─▒da oldu─ču gibi, gelecekte Bahar i├žin ├Âzel i┼člevleri ekleyebilir @Service , @Controller ve @Repository bunlar─▒n katman anla┼čmalar esas. Bu nedenle, kongreye sayg─▒ g├Âstermek ve katmanlarla ayn─▒ ├žizgide kullanmak her zaman iyi bir fikirdir.


720







Neredeyse ayn─▒lar - hepsi s─▒n─▒f─▒n bir Bahar fasulyesi oldu─ču anlam─▒na geliyor. @Service , @Repository Ve @Controller vard─▒r uzmanla┼čm─▒┼č @Component s. Onlarla belirli eylemleri ger├žekle┼čtirmeyi se├žebilirsiniz. ├ľrne─čin:

  • @Controller fasulye bahar-mvc taraf─▒ndan kullan─▒l─▒r
  • @Repository fasulye kal─▒c─▒l─▒─č─▒n istisna ├ževirisi i├žin uygundur

Ba┼čka bir ┼čey, bile┼čenleri farkl─▒ katmanlara anlamsal olarak ataman─▒zd─▒r.

Sunulan bir ┼čey, @Component onunla birlikte ba┼čka ek a├ž─▒klamalar─▒ ekleyebilmeniz ve ard─▒ndan ayn─▒ ┼čekilde kullanabilmenizdir @Service .

Mesela yak─▒n zamanda yapt─▒m:

 @Component
@Scope("prototype")
public @interface ScheduledJob {..}
 

Bu nedenle, a├ž─▒klamal─▒ t├╝m s─▒n─▒flar @ScheduledJob bahar fasulyesidir ve buna ek olarak kuvars i┼čleri olarak kaydedilir. Sadece belirli notlar─▒ i┼čleyen bir kod sa─člaman─▒z gerekir.


418







@ Bile┼čen e┼čde─čerdir

 <bean>
 

@Servis, @Controller, @Repository = {@Component + biraz daha ├Âzel i┼člevsellik}

Bunun anlam─▒ Servis, Denetleyici ve Depo i┼člevsel olarak ayn─▒d─▒r.

├ť├ž not, uygulaman─▒zdaki "Katmanlar─▒" ay─▒rmak i├žin kullan─▒l─▒r.

  • Kontrol├Ârler sadece g├Ânderme, y├Ânlendirme, servis y├Ântemlerini arama vb. ─░┼člemleri yaparlar.
  • Hizmet Tutma i┼č Mant─▒─č─▒, Hesaplamalar vb.
  • Depo DAO'lard─▒r (Veri Eri┼čim Nesneleri), veritaban─▒na do─črudan eri┼čirler.

┼×imdi neden onlar─▒ ay─▒rd─▒─č─▒n─▒z─▒ sorabilirsiniz: (AOP-Odak Y├Ânelimli Programlamay─▒ bildi─činizi varsay─▒yorum)

Diyelim ki sadece DAO Katman─▒n─▒n Aktivitesini ─░zlemek ─░stedi─činiz. DAO'nuzun her y├Ântemi ├ža─čr─▒lmadan ├Ânce ve sonra bir miktar g├╝nl├╝k kayd─▒ yapan bir Aspect (A s─▒n─▒f─▒) s─▒n─▒f─▒ yazacaks─▒n─▒z, ├╝├ž farkl─▒ Katman─▒n─▒z oldu─čundan ve kar─▒┼čt─▒r─▒lmad─▒─č─▒ndan AOP kullanarak bunu yapabilirsiniz.

B├Âylece DAO'yu DAO y├Ântemlerini "civar─▒nda", "├Ânce" veya "sonra" olarak kaydedebilirsiniz. Bunu ba┼čarabilirsin, ├ž├╝nk├╝ ilk ├Ânce bir DAO'n vard─▒. Yeni elde etti─činiz ┼čey endi┼čelerin veya g├Ârevlerin ayr─▒lmas─▒d─▒r.

Tek bir ek a├ž─▒klama @Controller olup olmad─▒─č─▒n─▒ hayal edin, o zaman bu bile┼čenin da─č─▒tma, i┼čletme mant─▒─č─▒ ve veritaban─▒na t├╝m karma, ├žok kirli kodlar─▒ eri┼čecek!

Yukar─▒da belirtilen ├žok yayg─▒n bir senaryodur, neden ├╝├ž a├ž─▒klama kullanman─▒n pek ├žok kullan─▒m durumu vard─▒r.


353







─░lkbahar @Component , @Service , @Controller ve @Repository stereotip ek a├ž─▒klama i├žin kullan─▒lan olan:

@Controller: senin nerede istek sunum sayfas─▒ndan haritalama yap─▒lan yani Sunum katman─▒n─▒n ba┼čka dosyaya gitmeyecek o do─črudan gider @Controller olarak talep yolu i├žin s─▒n─▒f ve ├žekler @RequestMapping gerekirse y├Ântem ├ža─čr─▒lmadan ├Ânce yaz─▒l─▒ a├ž─▒klama.

@Service : T├╝m i┼č mant─▒─č─▒ burada, yani Veri ile ilgili hesaplamalar ve hepsi. Kullan─▒c─▒m─▒z─▒n kal─▒c─▒l─▒k y├Ântemini do─črudan aramad─▒─č─▒ i┼č katman─▒n─▒n bu a├ž─▒klamas─▒, bu nedenle bu a├ž─▒klamay─▒ kullanarak bu y├Ântemi arayacakt─▒r. Kullan─▒c─▒ iste─čine g├Âre @Repository talep edecek

@Repository : Veritaban─▒ndan veri almak i├žin kullan─▒lan uygulaman─▒n Kal─▒c─▒l─▒k katman─▒d─▒r (Veri Eri┼čim Katman─▒). yani t├╝m veritaban─▒ ile ilgili i┼člemler depo taraf─▒ndan yap─▒l─▒r.

@Component - Di─čer bile┼čenlerinizi (├Ârne─čin REST kaynak s─▒n─▒flar─▒) bir bile┼čen kli┼česine ekleyin.

A├ž─▒klamal─▒ bir s─▒n─▒f─▒n " bile┼čen " oldu─čunu belirtir . Bu s─▒n─▒flar, a├ž─▒klama tabanl─▒ yap─▒land─▒rma ve s─▒n─▒f yolu taramas─▒ kullan─▒l─▒rken otomatik alg─▒lama i├žin aday olarak kabul edilir.

Di─čer s─▒n─▒f d├╝zeyinde ek a├ž─▒klamalar bir bile┼čenin, tipik olarak ├Âzel bir bile┼čen t├╝r├╝n├╝n tan─▒mlanmas─▒ olarak d├╝┼č├╝n├╝lebilir: ├Ârne─čin @Repository ek a├ž─▒klamas─▒ veya AspectJ'in @Aspect ek a├ž─▒klamas─▒.


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin


217







Yay 2.5, ba┼čka kli┼če a├ž─▒klamalar─▒n─▒ sunar: @ Bile┼čen, @ Servis ve @ Kontrol├Âr. @ Bile┼čen, Spring taraf─▒ndan y├Ânetilen herhangi bir bile┼čen i├žin genel bir kli┼če g├Ârevi g├Âr├╝r; oysa, @Repository, @Servis ve @Controller, daha spesifik kullan─▒m durumlar─▒ i├žin @ Bile┼čen uzmanl─▒─č─▒ olarak g├Ârev yapar (├Ârne─čin, kal─▒c─▒l─▒k, servis ve sunum katmanlar─▒nda). Bunun anlam─▒, bile┼čen s─▒n─▒flar─▒n─▒z─▒ @Component ile a├ž─▒klama ekleyebilmenizdir, ancak bunlar─▒ @Repository, @Service veya @Controller ile ekleyerek, s─▒n─▒flar─▒n─▒z ara├žlarla i┼člemek veya y├Ânleriyle ili┼čkilendirmek i├žin daha uygun olur. ├ľrne─čin, bu stereotip ek a├ž─▒klamalar─▒ nokta kesimleri i├žin ideal hedefler olu┼čturur. Elbette, @Repository, @Service ve @Controller'─▒n Spring Framework'├╝n gelecek s├╝r├╝mlerinde ek anlambilim ta┼č─▒malar─▒ da m├╝mk├╝nd├╝r. Bu nedenle, servis katman─▒n─▒z i├žin @Component veya @Service kullan─▒m─▒ aras─▒nda bir karar veriyorsan─▒z, @Service a├ž─▒k├ža daha iyi bir se├žimdir. Benzer ┼čekilde, yukar─▒da belirtildi─či gibi, @Repository kal─▒c─▒l─▒k katman─▒n─▒zdaki otomatik istisna ├ževiri i├žin bir i┼čaretleyici olarak zaten desteklenmektedir.

 @Component ÔÇô Indicates a auto scan component.
@Repository ÔÇô Indicates DAO component in the persistence layer.
@Service ÔÇô Indicates a Service component in the business layer.
@Controller ÔÇô Indicates a controller component in the presentation layer.
 

ba┼čvuru: - Bahar Dok├╝mantasyonu - Java kullanarak s─▒n─▒f yolu taramas─▒, y├Ânetilen bile┼čenler ve yazma yap─▒land─▒rmalar─▒


71







Veritaban─▒ ba─člant─▒s─▒ a├ž─▒s─▒ndan kullan─▒m─▒ @Service ve @Repository ek a├ž─▒klamalar─▒ ├Ânemlidir.

  1. @Service T├╝m web servis t├╝r├╝ DB ba─člant─▒lar─▒n─▒z i├žin kullan─▒n .
  2. @Repository T├╝m kay─▒tl─▒ proc DB ba─člant─▒lar─▒n─▒z i├žin kullan─▒n

Do─čru ek a├ž─▒klamalar─▒ kullanmazsan─▒z, geri alma i┼člemleriyle ge├žersiz k─▒l─▒nan istisnalar d─▒┼č─▒nda kalabilirsiniz. JDBC i┼člemlerini geri alma ile ilgili stres y├╝k├╝ testi s─▒ras─▒nda istisnalar g├Âreceksiniz.


46


2012-11-02





Teknik olarak @Controller , @Service , @Repository hepsi ayn─▒. Hepsi uzan─▒yor @Component .

Bahar kaynak kodundan:

A├ž─▒klamal─▒ bir s─▒n─▒f─▒n "bile┼čen" oldu─čunu belirtir. Bu s─▒n─▒flar, a├ž─▒klama tabanl─▒ yap─▒land─▒rma ve s─▒n─▒f yolu taramas─▒ kullan─▒l─▒rken otomatik alg─▒lama i├žin aday olarak kabul edilir.

Biz do─črudan kullanabilir @Component her fas├╝lye, ama daha iyi anla┼č─▒lmas─▒ ve b├╝y├╝k bir ba┼čvurunun D├╝zeltilebilirlik i├žin kulland─▒─č─▒m─▒z @Controller , @Service , @Repository .

Her ek notun amac─▒:

  1. @Controller -> Buna ek a├ž─▒klama eklenmi┼č s─▒n─▒flar, m├╝┼čteri taraf─▒ndan bir istek almay─▒ ama├žlamaktad─▒r. ─░lk talep, @RequestMapping a├ž─▒klama de─čerini kullanarak iste─či belirli denetleyiciye iletti─či Dispatcher Servlet'e gelir .
  2. @Service -> Bununla ek a├ž─▒klama verilen s─▒n─▒flar, istemciden ald─▒─č─▒m─▒z veya veritaban─▒ndan ald─▒─č─▒m─▒z verileri de─či┼čtirmeyi ama├žlar. Verilerle yap─▒lan t├╝m manip├╝lasyon bu katman i├žinde yap─▒lmal─▒d─▒r.
  3. @Repository -> Buna not eklenmi┼č s─▒n─▒flar, veritaban─▒na ba─članmak i├žin tasarlanm─▒┼čt─▒r. DAO (Veri Eri┼čim Nesnesi) katman─▒ olarak da de─čerlendirilebilir. Bu katman yaln─▒zca CRUD (olu┼čturma, alma, g├╝ncelleme, silme) i┼člemleriyle s─▒n─▒rland─▒r─▒lmal─▒d─▒r. Herhangi bir manip├╝lasyon gerekliyse, veriler @ Servis katman─▒na geri g├Ânderilmelidir.

Biz (kullan─▒m yerlerini kav┼čak durumunda @Repository yerine @Controller ), bizim uygulama cezas─▒ ├žal─▒┼čacakt─▒r.

├ť├ž farkl─▒ kullanman─▒n temel amac─▒ @annotations , Enterprise uygulamas─▒na daha iyi Mod├╝lerlik sa─člamakt─▒r.


39







@Repository @Service ve @Controller, daha belirli kullan─▒m i├žin @ Component'in uzmanl─▒─č─▒ olarak hizmet g├Âr├╝r; @ Servis'i @Component olarak de─či┼čtirebilirsiniz, ancak bu durumda uzmanl─▒─č─▒ kaybedersiniz.

 1. **@Repository**   - Automatic exception translation in your persistence layer.
2. **@Service**      - It indicates that the annotated class is providing a business service to other layers within the application.
 

28







T├╝m bu ek a├ž─▒klamalar, stereo tipi ek a├ž─▒klama t├╝r├╝ndedir, bu ├╝├ž ek a├ž─▒klama aras─▒ndaki fark

  • @Component ├Â─česini eklersek, s─▒n─▒f─▒n rol├╝n├╝n bir bile┼čen s─▒n─▒f─▒ oldu─čunu s├Âylerse, bunun bir mant─▒ktan olu┼čan bir s─▒n─▒f oldu─ču anlam─▒na gelir, ancak ├Âzel bir i┼čletme veya kal─▒c─▒l─▒k veya denetleyici mant─▒─č─▒ i├žeren bir s─▒n─▒f─▒n kullan─▒p kullanmad─▒─č─▒n─▒ s├Âylemez. do─črudan bu @ Bile┼čen ek a├ž─▒klamas─▒
  • @Service ek a├ž─▒klamas─▒ eklersek, o zaman i┼č mant─▒─č─▒n─▒ i├žeren bir s─▒n─▒f rol├╝ oldu─čunu s├Âyler.
  • E─čer s─▒n─▒f─▒n ├╝st├╝ne @Repository eklersek, kal─▒c─▒l─▒k mant─▒─č─▒ i├žeren bir s─▒n─▒fa s├Âyler.
  • Burada @Component @ Service, @ Repository ve @Controller ek a├ž─▒klamalar─▒ i├žin temel ek a├ž─▒klamad─▒r

├ľrne─čin

 package com.spring.anno;
@Service
public class TestBean
{
    public void m1()
    {
       //business code
    }
}

package com.spring.anno;
@Repository
public class TestBean
{
    public void update()
    {
       //persistence code
    }
}
 
  • Biz ekledi─činde @Service ya @Repositroy ya @Controller varsay─▒lan taraf─▒ndan ek a├ž─▒klama @Component a├ž─▒klama s─▒n─▒f─▒n─▒n ├╝st├╝nde varl─▒─č─▒ gidiyor

27







Yay bunlar, otomatik bile┼čen tarama ek a├ž─▒klama d├Ârt farkl─▒ sa─člar @Component , @Service , @Repository ve @Controller . Teknik olarak, aralar─▒nda fark yoktur, ancak her otomatik bile┼čen tarama ek a├ž─▒klamas─▒ ├Âzel bir ama├ž i├žin ve tan─▒mlanm─▒┼č katman i├žinde kullan─▒lmal─▒d─▒r.

@Component : Temel bir otomatik bile┼čen tarama ek a├ž─▒klamas─▒d─▒r, ek a├ž─▒klamal─▒ s─▒n─▒f─▒n bir otomatik tarama bile┼čeni oldu─čunu g├Âsterir.

@Controller : A├ž─▒klamal─▒ s─▒n─▒f, bunun bir denetleyici bile┼čeni oldu─čunu ve ├žo─čunlukla sunum katman─▒nda kullan─▒ld─▒─č─▒n─▒ g├Âsterir.

@Service : A├ž─▒klamal─▒ s─▒n─▒f─▒n, i┼č katman─▒ndaki bir Hizmet bile┼čeni oldu─čunu g├Âsterir.

@Repository : Bu ek a├ž─▒klamay─▒ kal─▒c─▒l─▒k katman─▒ i├žinde kullanman─▒z gerekir, bu veritaban─▒ deposu gibi davran─▒r.

Ki┼či @Component , s─▒n─▒f─▒n─▒ ek a├ž─▒klama yaparken daha ├Âzel bir y├Ântem se├žmelidir, ├ž├╝nk├╝ bu ek a├ž─▒klama ileriye y├Ânelik belirli davran─▒┼člar i├žerebilir.


23







Java standard─▒na g├Âre cevap verebiliriz.

┼×imdi JSR-330 bahar taraf─▒ndan desteklenen, sadece @Named bir fasulye tan─▒mlamak i├žin kullanabilirsiniz (Her nas─▒lsa @[email protected] ). Bu standarda g├Âre Yani, (gibi kli┼čeleri tan─▒mlamak i├žin hi├žbir faydas─▒ olmad─▒─č─▒n─▒ g├Âr├╝n├╝yor @Repository , @Service , @Controller ) kategoriler fasulye.

Ancak, yay kullan─▒c─▒s─▒, bu farkl─▒ ek a├ž─▒klamalar─▒, belirli bir kullan─▒m i├žin farkl─▒d─▒r, ├Ârne─čin:

  1. Geli┼čtiricilerin uzman i├žin daha iyi bir kategori tan─▒mlamas─▒na yard─▒mc─▒ olun. Bu s─▒n─▒fland─▒rma baz─▒ durumlarda yard─▒mc─▒ olabilir. (├ľrne─čin kullan─▒yorsan─▒z aspect-oriented , bunlar i├žin iyi bir aday olabilir pointcuts )
  2. @Repository a├ž─▒klama, ├žekirde─činize baz─▒ i┼člevler ekler (├žekirde─čin kal─▒c─▒l─▒─č─▒ katman─▒n─▒za baz─▒ otomatik istisna ├ževirisi).
  3. Bahar MVC kullan─▒yorsan─▒z, @RequestMapping kutu yaln─▒zca a├ž─▒klamada bulunan s─▒n─▒flara eklenebilir @Controller .

20







Di─čer bile┼čenleri @Component ile, ├Ârne─čin REST Resource s─▒n─▒flar─▒ ile a├ž─▒klama ekleyin.

 @Component
public class AdressComp{
    .......
    ...//some code here    
}
 

@Component, herhangi bir Spring taraf─▒ndan y├Ânetilen bile┼čen i├žin genel bir kli┼čedir.

@Controller, @Servis ve @Repository, belirli kullan─▒m durumlar─▒ i├žin @Component Uzmanl─▒klar─▒d─▒r.

@ Baharda Bile┼čen


&quot;Bile┼čen Uzmanl─▒─č─▒&quot;


19







@Component veya @Repository veya @service ile de─či┼č toku┼č yapsak bile

Ayn─▒ ┼čekilde davran─▒r, ancak bir y├Ân├╝, e─čer bile┼čen veya @ service kullan─▒yorsak, DAO ile ilgili depo yerine baz─▒ ├Âzel istisnalar─▒ yakalayamayacaklar─▒d─▒r.


17







─░lkbahar 4'te, en son s├╝r├╝m:

@Repository ek a├ž─▒klamas─▒, bir deponun rol├╝n├╝ veya stereotipini (Veri Eri┼čim Nesnesi veya DAO olarak da bilinir) sa─člayan herhangi bir s─▒n─▒f i├žin bir i┼čaretleyicidir. Bu i┼čaretleyicinin kullan─▒mlar─▒ aras─▒nda, B├Âl├╝m 20.2.2, ÔÇť─░stisna terc├╝mesiÔÇŁ b├Âl├╝m├╝nde a├ž─▒klanan istisnalar─▒n otomatik ├ževirisi bulunmaktad─▒r.

Yay, ba┼čka kli┼če a├ž─▒klamalar─▒ sa─člar: @Component, @Service ve @Controller. @Component, Spring taraf─▒ndan y├Ânetilen herhangi bir bile┼čen i├žin genel bir kli┼čedir. @Repository, @Service ve @Controller, ├Ârne─čin ─▒srar, servis ve sunum katmanlar─▒nda s─▒ras─▒yla daha spesifik kullan─▒m durumlar─▒ i├žin @ Bile┼čen uzmanl─▒─č─▒d─▒r. Bu nedenle, bile┼čen s─▒n─▒flar─▒n─▒z─▒ @Component ile ekleyebilir, ancak bunlar─▒ @Repository, @Service veya @Controller ile ekleyerek, s─▒n─▒flar─▒n─▒z ara├žlarla i┼člemek veya y├Ânleriyle ili┼čkilendirmek i├žin daha uygundur. ├ľrne─čin, bu stereotip ek a├ž─▒klamalar─▒ nokta kesimleri i├žin ideal hedefler olu┼čturur. @Repository, @Service ve @Controller'─▒n Spring Framework'├╝n gelecek s├╝r├╝mlerinde ek anlam ta┼č─▒malar─▒ da m├╝mk├╝nd├╝r. Bu nedenle, servis katman─▒n─▒z i├žin @Component veya @Service kullanmay─▒ tercih ediyorsan─▒z, @Service a├ž─▒k├ža daha iyi bir se├žimdir. Benzer ┼čekilde, yukar─▒da belirtildi─či gibi, @Repository kal─▒c─▒l─▒k katman─▒n─▒zdaki otomatik istisna ├ževiri i├žin bir i┼čaretleyici olarak zaten desteklenmektedir.


16







@ Component, @ Service, @ Controller, @ Repository aras─▒nda bir fark yoktur. @ Bile┼čen, MVC bile┼čenimizi temsil eden Genel a├ž─▒klamad─▒r. Ancak, MVC uygulamam─▒z─▒n bir par├žas─▒ olarak servis katman─▒ bile┼čenleri, kal─▒c─▒l─▒k katman─▒ bile┼čenleri ve sunum katman─▒ bile┼čenleri gibi birka├ž bile┼čen olacakt─▒r. B├Âylece onlar─▒ farkl─▒la┼čt─▒rmak i├žin Bahar halk─▒ di─čer ├╝├ž ek notu da vermi┼čtir.

Kal─▒c─▒l─▒k katman bile┼čenlerini temsil etmek i├žin: @Repository

Servis katman─▒ bile┼čenlerini temsil etmek i├žin: @ Servis

Sunum katman─▒ bile┼čenlerini temsil etmek i├žin: @ Kontrol├Âr

veya hepsi i├žin @Component kullanabilirsiniz.


13







@Component a├ž─▒klamal─▒ fasulyenin taranmas─▒n─▒ ve DI kab─▒nda bulunmas─▒n─▒ sa─člayan ├╝st d├╝zey genel a├ž─▒klamad─▒r.

@Repository ├ľzel a├ž─▒klama eklenmi┼čtir ve denetlenmeyen t├╝m istisnalar─▒ DAO s─▒n─▒flar─▒ndan d├Ân├╝┼čt├╝rme ├Âzelli─či sunar.

@Service ├Âzel a├ž─▒klamad─▒r. ┼ču andan itibaren yeni bir ├Âzellik getirmiyor, ancak fasulyenin amac─▒n─▒ netle┼čtiriyor

@ Kontrol├Âr fasulye MVC fark─▒nda k─▒lan ve benzeri @RequestMapping ve daha fazla a├ž─▒klama kullan─▒m─▒ sa─člayan ├Âzel bir ek a├ž─▒klama

─░┼čte daha fazla detay


13







A @Service , bahar belgelerini al─▒nt─▒lamak,

A├ž─▒klamal─▒ bir s─▒n─▒f─▒n, orijinal olarak Domain Driven Design (Evans, 2003) taraf─▒ndan "kaps├╝llenmi┼č bir durumu olmayan, modelde tek ba┼č─▒na duran bir aray├╝z olarak sunulan bir i┼člem" olarak tan─▒mlanan bir "Hizmet" oldu─čunu belirtir . Ayr─▒ca, bir s─▒n─▒f─▒n "─░┼č Hizmet Cephesi" (├çekirdek J2EE kal─▒plar─▒ anlam─▒nda) veya benzeri bir ┼čey oldu─čunu g├Âsterebilir. Bu a├ž─▒klama genel ama├žl─▒ bir kli┼čedir ve bireysel ekipler anlamlar─▒n─▒ daraltabilir ve uygun ┼čekilde kullanabilir.

Domain odakl─▒ tasar─▒ma eric evans bakarsan─▒z,

SERV─░S, ENTITIES ve VALUE OBJECTS'in yapt─▒─č─▒ gibi, kaps├╝lleme durumunda olmayan, modelde tek ba┼č─▒na duran bir aray├╝z olarak sunulan bir i┼člemdir. H─░ZMETLER teknik ├žer├ževelerde ortak bir kal─▒pt─▒r, ancak etki alan─▒ katman─▒nda da ba┼čvurabilirler. ─░sim servisi di─čer nesnelerle olan ili┼čkiyi vurgular. ENTITIES ve VARUE NESNELER─░N aksine, yaln─▒zca bir m├╝┼čteri i├žin neler yapabilece─či ile tan─▒mlan─▒r. Bir H─░ZMET, bir varl─▒ktan ziyade bir faaliyet olarak adland─▒r─▒l─▒r; isimden ziyade bir fiil. Bir H─░ZMET hala soyut, kas─▒tl─▒ bir tan─▒m olabilir; sadece bir nesnenin tan─▒m─▒ndan farkl─▒ bir tada sahiptir. Bir H─░ZMET hala tan─▒mlanm─▒┼č bir sorumlulu─ča sahip olmal─▒ ve bu sorumluluk ve bunu yerine getiren aray├╝z etki alan─▒ modelinin bir par├žas─▒ olarak tan─▒mlanmal─▒d─▒r. Operasyon adlar─▒ UBIQUITOUS LANGUAGE'den gelmeli veya i├žine eklenmelidir. Parametreler ve sonu├žlar etki alan─▒ nesneleri olmal─▒d─▒r. H─░ZMETLER ak─▒ll─▒ca kullan─▒lmal─▒ ve t├╝m davran─▒┼člar─▒n─▒n ENTITIES ve VARUE HEDEFLER─░N─░ soymas─▒na izin verilmemelidir. Fakat bir operasyon asl─▒nda ├Ânemli bir alan konsepti oldu─čunda, SERVICE bir MODEL-DRIVEN TASARIMIN do─čal bir par├žas─▒n─▒ olu┼čturur. Modelde H─░ZMET olarak bildirilmi┼č, asl─▒nda hi├žbir ┼čeyi temsil etmeyen bir sahte nesne yerine, ba─č─▒ms─▒z i┼člem kimseyi yan─▒ltmayacakt─▒r.

ve Repository Eric EvansÔÇÖa g├Âre bir

REPOSITORY, belirli bir t├╝rdeki t├╝m nesneleri kavramsal bir k├╝me (genellikle ├Âyk├╝nm├╝┼č) olarak temsil eder. Daha ayr─▒nt─▒l─▒ sorgulama yetene─či d─▒┼č─▒nda, bir koleksiyon gibi davran─▒r. Uygun tipteki nesneler eklenir ve kald─▒r─▒l─▒r ve REPOSITORY'in arkas─▒ndaki makineler onlar─▒ ekler veya veritaban─▒ndan siler. Bu tan─▒m, AGGREGATES k├Âklerine erken ya┼čam d├Âng├╝s├╝nden sonuna kadar eri┼čim sa─člama konusunda tutarl─▒ bir sorumluluklar toplar.


11







@Component : bir s─▒n─▒fa not eklersiniz @ Component, k─▒┼č uykusuna bir Bean oldu─čunu s├Âyler.

@Repository : @Repository s─▒n─▒f─▒n─▒ eklersiniz, haz─▒rda bekleme durumuna bir DAO s─▒n─▒f─▒ oldu─čunu s├Âyler ve DAO s─▒n─▒f─▒ olarak de─čerlendirir. Bu, i┼čaretlenmemi┼č istisnalar─▒ (DAO y├Ântemlerinden at─▒lan), Spring DataAccessException'a ├ževirmeye uygun hale getirdi─či anlam─▒na gelir.

@ Servis : Bu, haz─▒rda bekletme moduna ge├žti─čini s├Âyler; burada @Tacactional vb. Hizmet katman─▒ ek a├ž─▒klamalar─▒na sahip olacaks─▒n─▒z;

Art─▒ @Servis, @ComponentÔÇÖ─▒n avans─▒d─▒r. Bean s─▒n─▒f─▒ ad─▒n─▒n CustomerService oldu─čunu varsayal─▒m, ├ž├╝nk├╝ XML fasulye yap─▒land─▒rma yolunu se├žmediniz, b├Âylece Bean'i Bean olarak belirtmek i├žin @ Component ile a├ž─▒klama eklediniz. Bu nedenle, fasulye nesnesini al─▒rken CustomerService cust = (CustomerService)context.getBean("customerService"); Varsay─▒lan olarak, Spring, bile┼čenin ilk karakterini k├╝├ž├╝k harfle yazacakt─▒r - 'M├╝┼čteri Hizmetleri'nden' M├╝┼čteri Hizmetleri'ne. Ve bu bile┼čeni 'customerService' ismi ile alabilirsiniz. Ancak, fasulye s─▒n─▒f─▒ i├žin @Servis ek a├ž─▒klama kullan─▒yorsan─▒z, belirli bir fasulye ad─▒ belirtebilirsiniz.

 @Service("AAA")
public class CustomerService{
 

ve fasulye nesnesini

 CustomerService cust = (CustomerService)context.getBean("AAA");
 

10







Depo ve Servis , Bile┼čen a├ž─▒klamalar─▒n─▒n ├žocuklar─▒d─▒r . Yani, hepsi Bile┼čen . Havuz ve Servis sadece onu geni┼čletiyor. Tam olarak nas─▒l? Hizmetin yaln─▒zca ideolojik bir fark─▒ var: bunu servisler i├žin kullan─▒yoruz. Deponun ├Âzel istisna i┼čleyicisi vard─▒r.


9







Bile┼čen-depo-hizmet-ek a├ž─▒klamalar─▒n─▒n aras─▒ndaki fark─▒n ne oldu─čunu a├ž─▒klamak i├žin yeterince iyi cevaplar var. Aras─▒ndaki fark─▒ payla┼čmak istiyorum @Controller & @RestController

@Controller vs RestController

@RestController :


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

  • Bu not, otomatik olarak @Controller ekleyen @Controller ve @ResponseBody not ekleyen ├Âzel bir versiyondur . bu y├╝zden @ResponseBody haritalama metodlar─▒m─▒za eklemek zorunda de─čiliz . Bu @ResponseBody , varsay─▒lan aktif demektir .
  • E─čer kullan─▒rsan─▒z @RestController size (kullanarak bir g├Âr├╝n├╝m d├Ând├╝remez Viewresolver ─░lkbahar / ─░lkbahar-Boot)
  • @RestController Ayr─▒ca verilen yan─▒t─▒ d├Ân├╝┼čt├╝r├╝r JSON/XML automatically olarak @ResponseBody v├╝cutta olabilecek bir ┼čey d├Ând├╝ nesneleri yapar, e.g. JSON or XML

@Controller


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

  • @Controller Spring MVC Controller olarak s─▒n─▒flar─▒ i┼čaretlemek i├žin kullan─▒l─▒r. Bu ek a├ž─▒klama yaln─▒zca ├Âzel bir s├╝r├╝m├╝d├╝r @Component ve denetleyici s─▒n─▒flar─▒n─▒n s─▒n─▒f yolu taramas─▒na g├Âre otomatik olarak alg─▒lanmas─▒n─▒ sa─člar.
  • @Controller Spring web MVCÔÇÖde bir g├Âr├╝n├╝m d├Ând├╝rebilirsiniz.

Daha ayr─▒nt─▒l─▒ g├Âr├╝n├╝m


6







Basmakal─▒plar─▒n a├ž─▒klamas─▒:

  • @Service - T├╝m servis s─▒n─▒flar─▒n─▒z─▒ @Servis ile not edin. Bu katman i┼č birimini bilir. T├╝m i┼č mant─▒─č─▒n─▒z Hizmet s─▒n─▒flar─▒nda olacakt─▒r. Genellikle hizmet katman─▒ y├Ântemleri i┼člem kapsam─▒ndad─▒r. Birden fazla DAO ├ža─čr─▒s─▒ servis y├Ânteminden yapabilirsiniz, bir i┼člemin ba┼čar─▒s─▒z olmas─▒ durumunda t├╝m i┼člemlerin geri al─▒nmas─▒ gerekir.
  • @Repository - T├╝m DAO s─▒n─▒flar─▒n─▒z─▒ @Repository ile not edin. T├╝m veritaban─▒ eri┼čim mant─▒─č─▒n─▒z DAO s─▒n─▒flar─▒nda olmal─▒d─▒r.
  • @Component - Di─čer bile┼čenlerinizi (├Ârne─čin REST kaynak s─▒n─▒flar─▒) bile┼čen stereotipiyle a├ž─▒klama ekleyin.
  • @Autowired - @Autowired ek a├ž─▒klama kullanarak Spring'in di─čer fasulyeleri otomatik olarak s─▒n─▒fland─▒rabilmesini sa─člay─▒n.

@Component herhangi bir Spring taraf─▒ndan y├Ânetilen bile┼čen i├žin genel bir kli┼čedir. @Repository , @Service ve daha ├Âzel kullan─▒m durumlar─▒ i├žin, ├Ârne─čin ─▒srarc─▒l─▒k, hizmet ve sunum katmanlar─▒ @Controller gibi uzmanl─▒k alanlar─▒d─▒r @Component .

Aslen burada cevap verdi .


5







@Component, @Repository, @Controller & @Service ek a├ž─▒klamalar─▒ aras─▒ndaki fark

@Component - jenerik ve uygulama genelinde kullan─▒labilir.
@Servis - hizmet katman─▒ d├╝zeyinde s─▒n─▒flar─▒ a├ž─▒klama.
@Controller - S─▒n─▒flar─▒, ├Âzellikle Spring MVC'de kullan─▒lan sunum katmanlar─▒ d├╝zeyinde a├ž─▒klama ekleyin.
@Repository - kal─▒c─▒l─▒k katman─▒nda s─▒n─▒flar─▒ ekler ve bu da veritaban─▒ deposu g├Ârevi g├Âr├╝r.

@Controller = @Component (Dahili A├ž─▒klama) + Sunum katman─▒ ├ľzellikler
@Service = @Component (Dahili A├ž─▒klama) + Servis katman─▒ ├ľzellikler
@Component = Ger├žek Bile┼čenler (Fasulye)
@Repository = @Component (Dahili A├ž─▒klama) + Veri Katman─▒ ├ľzellikleri (kullan─▒m i├žin Etki Alan─▒ Fasulyelerinin Kullan─▒m─▒ ()


4







─░lkbahar ├žer├ževesinde, basmakal─▒p ek a├ž─▒klamalar olarak adland─▒r─▒lan baz─▒ ├Âzel ek a├ž─▒klamalar sunar. Bunlar:

 @RestController- Declare at controller level.
@Controller ÔÇô Declare at controller level.
@Component ÔÇô Declare at Bean/entity level.
@Repository ÔÇô Declare at DAO level.
@Service ÔÇô Declare at BO level.
 

yukar─▒da belirtilen ek a├ž─▒klamalar─▒n ├Âzel olmas─▒ nedeniyle, <context:component-scan> xxx-servlet.xml dosyas─▒na ekledi─čimizde , yay otomatik olarak ba─člam olu┼čturma / y├╝kleme a┼čamas─▒nda yukar─▒daki ek a├ž─▒klama ile eklenmi┼č bu s─▒n─▒flar─▒n nesnesini olu┼čturacakt─▒r.


3







@Component, @ Repository, @ Service, @Controller:

@Component, Spring @Repository, @Service ve @Controller taraf─▒ndan y├Ânetilen bile┼čenler i├žin genel bir kli┼čedir: Daha spesifik kullan─▒mlar i├žin @Component uzmanl─▒klar─▒:

  • Kal─▒c─▒l─▒k i├žin @Repository
  • @ Hizmetler ve i┼člemler i├žin servis
  • @ MVC kontrol├Ârleri i├žin kontrol├Âr

Neden @Repository, @ Service, @Controller @ Component kullan─▒yorsunuz? Bile┼čen s─▒n─▒flar─▒m─▒z─▒ @Component ile i┼čaretleyebiliriz, ancak bunun yerine beklenen i┼člevselli─če uyarlanan alternatifi kullan─▒r─▒z. S─▒n─▒flar─▒m─▒z her durumda beklenen i┼člevsellik i├žin daha uygundur.

"@Repository" ile a├ž─▒klamal─▒ bir s─▒n─▒f org.springframework.dao.DataAccessException ile daha iyi bir ├ževiri ve okunabilir hata i┼čleme sahiptir. Verilere eri┼čen bile┼čenleri uygulamak i├žin idealdir (DataAccessObject veya DAO).

"@Controller" ile a├ž─▒klamal─▒ bir s─▒n─▒f, Spring Web MVC uygulamas─▒nda denetleyici rol├╝ oynar

"@Service" ile a├ž─▒klamal─▒ bir s─▒n─▒f, i┼č mant─▒─č─▒ hizmetlerinde, DAO Manager (Facade) i├žin Facade paterni ve i┼člem y├Ânetimi i├žin bir rol oynar


2







Bu resme basitle┼čtirmek amac─▒yla, bize Kullan─▒m ├Ârne─čine g├Âre technicality d├╝┼č├╝nelim, Bu ek a├ž─▒klamalar enjekte edilmesi i├žin kullan─▒l─▒r ve dedi─čim gibi tam anlam─▒yla " enjekte edilmesi i├žin kullan─▒l─▒r kullanmak nas─▒l biliyorsan─▒z, demek oluyor," Ba─č─▒ml─▒l─▒k Enjeksiyon "DI" ve seni gerekirse, o zaman bu ek a├ž─▒klamalar─▒ her zaman arayacaks─▒n─▒z ve bu Stereo T├╝rleri ile s─▒n─▒flar─▒ ekleyerek, DI kapsay─▒c─▒s─▒n─▒ di─čer yerlere Enjeksiyon i├žin haz─▒r olmalar─▒ i├žin taramalar─▒ konusunda bilgilendiriyorsunuz , bu pratik hedef.

┼×imdi her birine ge├želim; ilk @Servis , Belirli bir i┼č vakas─▒ i├žin bir mant─▒k olu┼čturuyorsan─▒z, i┼čletme mant─▒─č─▒n─▒z─▒ i├žerecek bir yerde ay─▒rman─▒z gerekir, bu hizmet normal S─▒n─▒f't─▒r veya isterseniz aray├╝z olarak kullanabilirsiniz; bu

 @Service
public class Doer {
   // Your logic 
}

// To use it in another class, suppose in Controller 
@Controller
public class XController {
 // You have to inject it like this 
 @Autowired 
 private Doer doer;
}
 

Bunlar─▒ enjekte etti─činizde hepsi ayn─▒ ┼čekildedir , @Repository , Repository Pattern Repository tasar─▒m deseni i├žin uygulamay─▒ uygulayan bir arabirimdir , genellikle baz─▒ veri deposu veya veritaban─▒yla u─čra┼č─▒rken kullan─▒l─▒r ve birden ├žok i├žerdi─čini g├Âreceksiniz. veritaban─▒ i┼člemlerini y├╝r├╝tmeniz i├žin haz─▒r uygulama; CrudRepository , JpaRepository vs. olabilir .

 // For example
public interface DoerRepository implements JpaRepository<Long, XEntity> {}
 

Sonunda @Component , bu ilkbaharda kay─▒tl─▒ fasulye i├žin genel formdur, bu ilkbaharda her zaman @Component ile i┼čaretlenmi┼č fasulye aran─▒r, daha sonra hem @Service hem de @Repository @Component'in ├Âzel durumlar─▒d─▒r, ancak ortak kullan─▒m durumu ├ç├╝nk├╝ bile┼čen, do─črudan i┼č vakas─▒n─▒ ├Ârtmemek i├žin tamamen teknik bir ┼čey yapt─▒─č─▒n─▒z zaman! tarihleri ÔÇőÔÇőbi├žimlendirme veya ├Âzel istek seri hale getirme mekanizmas─▒ vb.


1







 @component
@controller
@Repository
@service
@RestController
 

Bunlar─▒n hepsi StereoType ek a├ž─▒klamalar─▒d─▒r. Bu, s─▒n─▒flar─▒m─▒z─▒ ioc kab─▒nda bahar fasulyesi olarak yapmak i├žin kullan─▒┼čl─▒d─▒r,


-7



─░lgili yay─▒nlar


Npm package.json dosyas─▒ndaki ba─č─▒ml─▒l─▒klar, devDependencies ve peerDependencies aras─▒ndaki fark nedir?

Python 2.X'te range ve xrange i┼člevleri aras─▒ndaki fark nedir?

Java 8'deki map ve flatMap y├Ântemleri aras─▒ndaki fark nedir?

Spring Data JPA'daki CrudRepository ve JpaRepository arabirimleri aras─▒ndaki fark nedir?

React / React Native'da constructor vs getInitialState kullanma aras─▒ndaki fark nedir?

Java'daki getPath (), getAbsolutePath () ve getCanonicalPath () aras─▒ndaki fark nedir?

Es6 s─▒n─▒flar─▒ kullan─▒l─▒rken React'te ÔÇťsuper ()ÔÇŁ ve ÔÇťsuper (props)ÔÇŁ aras─▒ndaki fark nedir?

Medya sorgular─▒nda ÔÇťekranÔÇŁ ve ÔÇťsadece ekranÔÇŁ aras─▒ndaki fark nedir?

GitHub projelerinde README ve README.md aras─▒ndaki fark nedir?

NgModuleÔÇÖda bildirimler, sa─člay─▒c─▒lar ve ithalat aras─▒ndaki fark nedir?

Etiketle ilgili di─čer sorular [java]


Android'de yer├žekimi ve layout_gravity aras─▒ndaki fark nedir?

Bir panda DataFrame'in sat─▒r say─▒s─▒n─▒ nas─▒l alabilirim?

'Border: none' ya da 'border: 0' kullanmal─▒ m─▒y─▒m?

Python kullanarak bir karakterdeki her karakteri yineleme

R'yi yeniden ba┼člatmadan bir paket nas─▒l kald─▒r─▒l─▒r

Web paketinde jQuery eklentisi ba─č─▒ml─▒l─▒─č─▒n─▒ y├Ânetme

S─▒n─▒flar aras─▒ndaki dairesel ba─č─▒ml─▒l─▒k nedeniyle derleme hatalar─▒n─▒ ├ž├Âzme

R'de trycatch nas─▒l yaz─▒l─▒r

AngularJS'deki bir yay─▒n etkinli─činin aboneli─či nas─▒l iptal edilir. $ On arac─▒l─▒─č─▒yla kaydedilen i┼člev nas─▒l kald─▒r─▒l─▒r

Unix komut sat─▒r─▒nda veya bir kabuk komut dosyas─▒nda bir metin dosyas─▒n─▒n sat─▒rlar─▒n─▒ nas─▒l kar─▒┼čt─▒rabilirim?