Konfigurace modulů – jak nejlépe na to
- Jiří Nápravník
- Člen | 710
Mám aplikaci rozdělenou na několik modulu, PhotoModule, ArticleModule apod. A chci mít možnost konfigurace například, cesta kam se budou nahrávat fotky, velikosti na které je budu ořezávat apod. No a teď jak nejlépe tohle řešit? Napadlo mě nekolik způsobů:
- Tohle jsem měl nejdříve nandal jsem to config.neon pod slozku parameters a konkrétní parametry jsem si přes neon posílal, do služeb, komponent, příp. presenteru. Ale postupně se mi to přestalo líbit, protože jsem těhle parametrů měl více a neon bobtnal díky tomu, že jsem předával tyhle závislosti na hodně místech.
- To mám teď, stále parametrs, nicméně udělal jsem si obálku nad parametri pro každý modul, nemusím tak řešit předávání, a řeší to za mě autowiring.
- Dnes mě ale napadlo, zda by na tohle nešli nějak rozumně využít CompilerExtensions, je to v podstatě to samé, co se dělá u ruzných konfigurací extensions. Nějaké defaultní hodnoty, mohu je překrýt. Ale nevím jak bych pak tyhle závislosti přeával do konkrétních komponent, modelových tříd atd. Resp. vím, vytáhnul bych si ContainerBuilder a tam to vše nastavoval. Ale zase pak bych v tom měl celkem nepořádek, některé služby definované v configu, některé v CompilerExtensions.
Jak to tedy nejlépe řešit?
- David Matějka
- Moderator | 6445
některé služby definované v configu, některé v CompilerExtensions.
tak je vsechny nadefinuj v compiler extension, ne? :)
Ja to resim pres compiler extension a vyhovuje mi to..
Wrappery okolo parametru vytvarim az ve chvili, kdy je ten parametr potrebny ve vice sluzbach (nebo kdyz je jedna sluzba zavisla na mnoho parametrech). Vetsinou to ale nejsou nejaky registry se vsemi parametry a s getterama. Ale spis jednoduchy sluzby kolem jednoho, dvou souvisejicich parametru a maji v sobe treba i nejakou jednoduchou logiku.
Editoval matej21 (26. 3. 2014 18:46)
- Jiří Nápravník
- Člen | 710
JJ, což o to to mám podobně díky Flame\Modules. Ale mě se tam halvně nelíbí to posílání neobjektových dat, do konstruktoru, který pak taky bobtná, když tam těch závislostí je více. Ano řešením je použít setup a nasázet to tam. Ale je přeci jen lepší, když se podívám na konstruktor a tam vidím hned všechny požadované závislosti
Napadlo mě ještě teď, že by šlo ty extensions udělat tak, že bych tam měl ty parametry a extensiona by udělala to, že by vytvořila službu, která by obalovala ty nastavené věci. Byla by to taková ta možnost dvě jak jsem uvedl v úvodním postu, ale nebylo by to pod parametrs v neonu a mohl bych i v extensione kontrolovat i zda je nastavený na správnou hodnotu, například složka je opravdu složka apod.
- Jiří Nápravník
- Člen | 710
matej21 : no to se mi moc nechce, jsem tvor líný:-) jeden modul má třeba 20 služeb a továrniček a to bych se upsal časem…
no v mym pripade to jsou vetšinou parametry, který nesou většinou jen textovou informaci – adresář, e-mail apod.. Takže by to byla v podstatě obálka nad dvěma třema atributy a to raději udělám registr všech
- Tomáš Votruba
- Moderator | 1114
@Jiří Nápravník: Osobně to řeším tak, že parametry k parametrům pod podsekci modules.
- Jiří Nápravník
- Člen | 710
@Tomáš to je hodně podobné tomu, jak to mám teď, jen nevyužívám CompilerExtension, ale mám to v konkrétních ServiceWrapperech. Jak řešíš pak samotné předávání, či jak se dostáváš k parametrům?
- Tomáš Votruba
- Moderator | 1114
@Jiří Nápravník: Viz ParameterService (obálka nad polem parametrů)
Tam, kde potřebuji pracovat s nějakými parametry, si ji injectnu a vytáhnu co je potřeba.
Editoval Tomáš Votruba (27. 3. 2014 8:16)
- Jiří Nápravník
- Člen | 710
Tak to máme opravdu hodně podobné, já jen nemám jednu parameter service, ale mám vždy pro modul konkrétní, kvůli tomu, že chci mít třeba zkratku a volat jednou metodou například nějaký konkrétní index v poli parameters.