Sfat mic - mi-a fost util să modularizez și să etichetez în mod clar fișierele mele de primăvară xml bazate pe preocuparea aplicației. Iată un exemplu pentru o aplicație web pe care am lucrat:
MyProject/src/main/resources/spring /
- datasource.xml - My single data source bean.
- persistence.xml - My DAOs/Repositories. Depends on
datasource.xml
beans.
- services.xml - Service layer implementations. These are usually the beans to which I apply transactionality using AOP. Depends on
persistence.xml
beans.
- controllers.xml - My Spring MVC controllers. Depends on
services.xml
beans.
- views.xml - My view implementations.
Această listă nu este nici perfectă, nici exhaustivă, dar sper că ilustrează acest lucru. Alegeți orice strategie de numire și granularitate funcționează cel mai bine pentru dvs.
În experiența mea (limitată), am văzut această abordare în ceea ce privește următoarele beneficii:
Arhitectură mai clară
În mod evident, fișierele cu nume de context le oferă celor care nu cunosc structura proiectului un model rezonabil
loc pentru a începe căutarea definițiilor fasolei. Poate face ușor detectarea dependențelor circulare/nedorite.
Ajută la proiectarea domeniului
Dacă doriți să adăugați o definiție a fasolei, dar nu se potrivește bine în niciunul din fișierele dvs. de context, poate că există un nou concept sau o preocupare care apare? Exemple:
- Să presupunem că doriți să faceți ca stratul dvs. de servicii să fie tranzacțional cu AOP. Adăugați aceste definiții pentru fasole la
services.xml
sau le puneți în propriul lor transactionPolicy.xml
? Vorbeste-o cu echipa ta. Politica dvs. de tranzacții ar trebui să fie conectabilă?
- Adăugați fasolea Acegi/Spring Security în fișierul
controllers.xml
sau creați un fișier de context security.xml
? Aveți cerințe de securitate diferite pentru implementări/medii diferite?
Testarea integrării
Pentru a testa baza de date aveți nevoie să creați numai datasource.xml
și persistence.xml
pentru un subset al aplicației dvs. pentru testarea integrării (ex: fasole).
În mod specific, puteți adnota o clasă de testare a integrării ca atare:
@ContextConfiguration(locations = { "/spring/datasource.xml" , "/spring/persistence.xml" })
Funcționează bine cu Bean Graph de la IDE de primăvară
Având o mulțime de fișiere de context concentrate și bine-numite face ușor de a crea personalizate BeansConfigSets pentru a vizualiza straturile de aplicația dvs. folosind Spring IDE Bean Graph . Am folosit acest lucru înainte pentru a oferi membrilor echipei noi o imagine de ansamblu la nivel înalt a organizației aplicației noastre.