[ anon315 @ 15.03.2007. 21:01 ] @
Voleo bih da cujem iz prve ruke o Spring frameworku. Dakle, sta je Spring, sta on to ima da ponudi u odnosu na druge frameworke, sta su mu prednosti, sta mane, koliko brzo moze da se savlada, gde ga je najbolje koristiti. Takodje me zanima gde moze da bude njegova uloga u sistemu baziranom na sledecim tehnologijama: jsf/adf, ejb 3.0, esb, bpel.

V
[ anon315 @ 22.03.2007. 09:30 ] @
Da li je moguce da ga niko ne koristi ovde, a toliko ga hvale? :)

Btw, nisam naisao ni na jednu knjigu o novom Springu (verzija 2, pa na vise), vec su sve bazirane na 1.nesto...
[ franticnick @ 22.03.2007. 10:14 ] @

Spring je odlican frejmvork sa veoma cistom strukturom. Ako pravis web aplikacije mislim da je pravi izbor. Ja sam ga savladao za nekih par meseci, mada ne mogu reci da ga i dalje ne ucim.

Za pocetak je najbolje preci: http://static.springframework....ocs/2.0.x/reference/index.html
[ anon315 @ 22.03.2007. 10:27 ] @
Vidis sta ti je kad covek juri pravo na knjige.

Tnx :)
[ mikorkns @ 23.03.2007. 16:49 ] @
Ja ga koristim aktivno nekoliko meseci. Trebalo mi je dosta vremena da ga savladam, ali stvar je fenomenalna. Ne znam da li je to slucaj sa drugim frameworcima (o Strutsu sam samo citao ali nisam nista konkretno radio), ali Spring u potpunosti implementira MVC patern. Svi slojevi su jasno razgraniceni. Svaki layer se definise u konteksnom fajlu. Najprepoznatljiviji kontekst vezan za Spring, 'dependency injection', u potpunosti podrzava praksu programiranja interfejsa. Siroka lepeza kontrolera (mislim da se u Strutsu to naziva akcija).

Opisanu ideju (tada je jos bila samo ideja) imas u: Expert One-on-One J2EE Development without EJB, Rod Johnson
A ubedljivo najbolja knjiga je: Spring in action, Craig Walls
[ anon315 @ 23.03.2007. 17:10 ] @
Citat:
mikorkns:A ubedljivo najbolja knjiga je: Spring in action, Craig Walls


Krenuo sam sa oficijelnom dokumentacijom lagano, mada vidim da podrazumevaju da vec znas neke stvari i primeri im ne rade bas najbolje, moras sam da kopas po netu. Na primer, tek negde na 100 str. daju deklaraciju beans.xml fajla koja moze da radi, a pre toga postoji nekoliko primera sa deklaricijom koja ne radi..

Reci mi za tu knjigu, za koju verziju Springa vazi, posto meni eksplicitno treba verzija 2.0.x. I ako je za stariju verziju, koliko mogu da se oslonim na nju, a da kasnije, citajuci pomenutu oficijelnu dokumentaciju vidim koja su poboljsanja i slicno?

Hvala,
V
[ milos23 @ 24.03.2007. 06:59 ] @
uzmes primere pa kidas :)

elem, ne treba porediti struts i spring, struts je samo web framework dok je spring full stack framework, ali to ne znaci da ste prisiljeni da koristite samo spring... sta vise toliko je dobro odradjena podrska za sve ostale framework-e da zaista svaka pohvala... ono sto je dobro kod springa sto olaksava mnoge stvar, pa tako i npr sam rad sa hibernate-om.... sto se tiche web-a, mnogi kude spring-ov web framework i kazu da je najlosiji deo spring-a, sto i ja mislim :) mnogo mi je lepsa hibernate, spring, webwork kombinacija, sve cisto i jednostavno........ ono sto ljudi iz interface-a preporucuju kao strukturu web app je sledece:

DAO layer (prvo interfejsi pa implementacija u zavisnosti od toga da li se koristi jdbc, hibernate, ...)
Service layer(u slucaju jednostavnih app samo delegiraju poziv na DAO, a kod iole slozenijih stavlja se i business logika)
Web layer

Zanimljivost ako se koristi prethodna kombinacija (hibernate, spring i webwork), ama bas sve moze da se definise kao bean-ovi u context fajlu, cak i webwork akcije posto je spring vec neko vreme podrzan kao container u webwork-u

Sto se tice literature, dobre su sve knjige koje postoje (ne mogu da budu lose knjige od ljudi koji su glavni na spring-u): rod johnson ima u izdanju wrox-a valjda, a rob harrop u izdanju Apress-a, Spring in action, a tu je i online dokumentacija......... u svakom slucaju, mnogo vise dokumentacije nego za bilo koji drugi framework
[ Dundjerski Nemanja @ 29.03.2007. 19:10 ] @
Mene interesuje zasto ljudi potenciraju da se ide sa sledecom varijantom:

JSF - Spring - Hibernate

zasto ne samo

JSF - Hibernate

?
[ anon315 @ 29.03.2007. 19:31 ] @
Btw, evo jednog interesantnog artikla koji moze fino da posluzi kao uvod u Spring:

http://martinfowler.com/articles/injection.html
[ vanhulio @ 30.03.2007. 16:13 ] @
...

Inace, preporucujem POJOs in Action, knjiga vrlo dobro objasnjava materiju i lightweight strukturu middle-tier-a, IMHO doduse, tek sam presao 3 poglavlja.
http://www.manning.com/crichardson/

[Ovu poruku je menjao veljaradenkovic dana 31.03.2007. u 21:04 GMT+1]
[ anon315 @ 06.06.2007. 12:14 ] @
Izadje nova verzija knjige Spring in Action za Spring 2 ;)

http://www.amazon.com/Spring-A..._k2a_3_img/002-2680523-2612068
[ sanchi @ 10.06.2007. 18:02 ] @
Možda je oftopic, nedavno je google objavio framework za dependency injection: guice.
http://code.google.com/p/google-guice/

Videla sam projekat koji je urađen u njemu, i izgleda odlično.
Konfiguracija se radi anotacijama a ne xml-ovima, tako da je kod mnogo pregledniji i čitljiviji, a i nema opasnosti od bagova koji se javljaju kada se promeni naziv klase, ali ne i xml konfiguracija - što mi se često dešavalo.

U poređenju sa springom je veoma jednostavan i lagan, komentari su da se brzo i lako uči, a izgleda da ipak ima sve što je neophodno za dependency injection.

Iako je framework nov, drugar je završio ceo projekat, sve šljaka bez problema i jako je zadovoljan, tako da prvom prilikom izbacujem spring.
[ anon315 @ 10.06.2007. 18:45 ] @
Citat:

Konfiguracija se radi anotacijama a ne xml-ovima, tako da je kod mnogo pregledniji i čitljiviji, a i nema opasnosti od bagova koji se javljaju kada se promeni naziv klase, ali ne i xml konfiguracija - što mi se često dešavalo.


A sa druge strane, ako koristis anotacije i zelis nesto da promenis, onda moras da rekompajliras kod, sto nije slucaj kada se koristi XML.

Citat:

Iako je framework nov, drugar je završio ceo projekat, sve šljaka bez problema i jako je zadovoljan, tako da prvom prilikom izbacujem spring.


Ako si koristila samo Springov IoC kontejner onda Ok, ne treba ti ceo Spring...

Mozete pogledati i Plexus projekat:

http://plexus.codehaus.org/
[ sanchi @ 10.06.2007. 20:17 ] @
Citat:
Vanja Petreski:
A sa druge strane, ako koristis anotacije i zelis nesto da promenis, onda moras da rekompajliras kod, sto nije slucaj kada se koristi XML.

Naravno.. jedino što u toku rada svejedno stalno radim izmene i kompajliram aplikaciju.
Do sada nijednom nisam iskoristila tu prednost da mogu da menjam nešto u xml-u bez kompajliranja, dok sam na problem sa pogrešnim imenom klase/paketa u xml-u naišla bezbroj puta.

Veća prednost xml-a u slučaju IoC-a je što je konfiguracija za dependency tree na jednom mestu: u xml-u, gde može lako da se menja za različite namene: testove ili deploy verziju.

Da.. zaboravih da dodam još jednu veliku manu Springa: mora da postoji setter za dependency koji se injectuje. Vidim da plexus to takodje navodi kao veliku prednost. Drugar nije bio lenj pa je izračunao da mu je kod za 100tinjak linija manji na relativno malom projektu, čime je i sam kod lepši i pregledniji.

Evo i video za guice: http://video.google.com/videoplay?docid=6068447410873108038
[ ana @ 13.06.2007. 22:32 ] @
Cao Vanja,

izgleda da se ovih dana bavimo slicnom problamtikom - maven, spring, itd ;)
Pogledja svakako Appfuse 2.0 koji je "kostur" aplikacija bazirana na Spring 2.0 od Matt Raibla
http://appfuse.org/display/APF/AppFuse+QuickStart
Odlicna knjigica za startovanje je bila Spring Live, ali na zalost verzija 2.0 je najavljena za kraj avgusta.

Ukoliko nadjes/nadjete neke open source projekte bazirane na Appfuse/Spring, saljite linkove! (hitno)


Hm da, ima li ovde nekog ko je imao prilike da radi na Sprin2.0 i Ruby on Rails projektima, poredjenje bi bilo super. (mozda novi topic?)


[ anon315 @ 13.06.2007. 23:10 ] @
Cuj, "ovih dana"...

Bacih pogled na brzaka, ovo bolje da si postavila u temi: http://www.elitesecurity.org/t225860-Jel-koristi-neko-Maven

Koliko sam video, likovi su napravili gomilu M2 artifakta, a pola feature-a kojima se hvale su M2 feature-i. Na kraju cemo videti gomilu slicnih projekata (ja sam naleteo na http://www.mergere.com/)

U svakom slucaju vredi ovo pogledati sta je!
[ cope.rs @ 14.06.2007. 11:40 ] @
Ja nemam nikakvog iskustva sa Springom, ali imam malo sa Hibernate-om. Juce mi je bas kolega rekao da Spring valjda extra olaksava koriscenje Hibernate-a, ali da me ubijes se ne secam zasto tacno.
[ sasa__ @ 14.06.2007. 18:12 ] @
Pozdrav svima!

Koristim spring malo vise od godinu dana i mogu reci da sam zadovoljan sa njim.
Spring definitivno ima buducnost.
[ wiretap @ 19.06.2007. 09:31 ] @
Ruby on Rails bih preporucio da se izbegava u sirokom krugu osim ako neko ne zeli/voli da pravi mini web sajtove (do kraja zivota). Napravljen da se sklepa tipican CRUD web sajt u rekordnom roku, nikada nece niti placen kao Java EE posao, niti ce biti koristen za nesto iole ozbiljnije i zahtevnije u svakom pogledu.

Da mi se oprosti na ovome izrazu, ali napravise ga "da deca imaju sa cime da se igraju". :)
[ ana @ 19.06.2007. 11:59 ] @
hm, interesantno. Da li mozes da objasnis malo sta mislis da su mane Ruby-ja u poredjenju sa Spring+Hibernate kombinacijom?

Da li si imao prilike da radis na projektima koji koriste obe frameworka (tj. i na jednim i na drugim), i da li mozes dati uporedni prikaz?

Kod mene su trentuno dva tima pocela da rade ovih dana - prvi sa appfuse2.0 (SpringMVC+Spring+Hibernate), drugi sa Ruby-jem, i mogu vam reci da se prvi tim jos nije pomerio sa pocetka. Sa jedne strane problem moze biti zato sto su to timovi studenata, ali sa druge moj licni utisak je da je Appfuse 2.0 kompleksan i prenabudzen za komforan rad. Posto sam vec koristila Spring i Appfuse, ocekivala sam nesto drasticno bolje u verziji 2.0, a ispalo je prilicno komplikovano, i mogu reci da mi je prva verzija bila mnogo prikladnija za web app projekte.

tako da bi me pored isustava zanimalo i tehnicko poredjenje - Ruby vs. Spring/Appfuse 2.0, prednosti i mane.
[ jablan @ 19.06.2007. 12:09 ] @
Citat:
wiretap: Napravljen da se sklepa tipican CRUD web sajt u rekordnom roku, nikada nece niti placen kao Java EE posao, niti ce biti koristen za nesto iole ozbiljnije i zahtevnije u svakom pogledu.

Na koliko si ozbiljnijih projekata radio i zašto oni ne bi mogli da se urade u RoR-u?
[ sanchi @ 19.06.2007. 12:58 ] @
I mene bas zanima ako neko ima iskustva sa RoRom, ali preporucujem da se rasprava premesti na postojecu temu:
http://www.elitesecurity.org/t228630-Ruby-on-Rails-misljenja
[ hyle @ 19.06.2007. 13:03 ] @
Znao sam da će doći do ovakvih reakcija

Predlazem da wiretap iznese svoje misljenje u okviru teme koju je predlozio sanchi pa da se tamo nastavi diskusija. Dalje poruke vezane za Ruby na ovoj temi će biti obrisane.
[ sanchi @ 19.06.2007. 13:28 ] @
PredloziLA, molicu lepo. :) Hvala.

[ ana @ 19.06.2007. 13:33 ] @
opsta diskusija o RoR je OK za drugu temu, ali bi poredjenje moglo da ostalo i ovde, jer se radi i o Springu. Ili nam je mozda potreban novi Topic Spring vs. Ruby? Ako je tako molim moderatora da otvori topic, tamo gde vec misli da je to najprikladnije :)
[ hyle @ 19.06.2007. 14:34 ] @
Izvinjavam se sanchi, nisam mogao da utvrdim pol na osnovu profila pa sam pogrešno pretpostavio da pridaš brojnijoj (muškoj) grupi korisnika na ovom forumu

Što se tiče nove teme, Spring vs. Ruby mi nekako vuče na Advocacy tako da možeš tamo slobodno da postaviš temu. Ja ne zalazim na Advocacy jer te diskusije obično ne daju nikakvog efekta ostim što se učesnici iznerviraju

Pozdrav
[ ana @ 19.06.2007. 16:22 ] @
zaista me ne zanima advocacy - za to nemam vremena.

Ono sto me ZAISTA zanima je poredjenje dva popularna frameworka za razvoj web aplikacija zasnovano na:
1) tehnickim karakteristikama
2) iskustvima u radu sa jednim i drugim prilikom devleopmenta
3) iskustvima prilikom deploymenta (skalabilnost, i sl relevantne stavke)



[ alex @ 19.06.2007. 17:21 ] @
Spring je po mom misljenju ono sto je JavaEE trebalo da bude od samog pocetka. Znatno olaksava timski rad (forsira se interface-first razvoj, sto je jako dobro) i ima odlicnu strukturu cime omogucava jednostavno izvodjenje i dizajn cak i veoma komplikovanih i zahtevnih aplikacija. Nekome mogu da zasmetaju XML config fajlovi, slazem se, ali uz IDE koji podrzava code-complete (SpringIDE plugin, npr) ti problemi nestaju.
[ ana @ 19.06.2007. 19:50 ] @
Zdravo Aleksandre, da li znas neki plugin koji bi omogucio bolju kontrolu veze izmedju konfig fajlova (e.g. prilikom registrovanja beanova) i odgovarajuceg java koda? Posle apr sati provedenih u brobi protiv spelling mistake, mislim da je to prilicno slaba tacka... Ako znas nesto dobro, javi sto pre :)
Da li koristis Spring IDE 2.0, i da li si imao nekih problema prilikom instalacije?
[ dejankr @ 19.06.2007. 21:44 ] @
Spring/AppFuse teško može da parira RoR po produktivnosti. AppFuse u stvari i ne bih preporučio za bilo šta više osim da se prilikom učenja tehnologija koje koristi pokupi par fora. U više navrata sam nalazio problematičan kod i rešenja u AppFuse tako da nemam puno poverenja u njega. Čini mi se da njegov autor (Matt Raible) u stvari kroz njega uči i isprobava nove frameworke pa mu se često desi da u nečem omane, dok ga neko ne ispravi a to je znalo da potraje par verzija. Doduše, nisam ga skoro koristio pa moguće da se popravio u međuvremenu.

Što se tiče samog Springa, čini mi se da on polako postaje žrtva sopstvenog uspeha, jer zbog velike korisničke baze teško da može revolucinarno da se menja. S druge strane, okruženje u kojem je Spring nastao se itekako promenilo za ovih nekoliko godina. Spring polako postaje isuviše kompleksan, pa pomalo liči na J2EE zbog kojeg je u stvari i nastao. U principu nemam loše mišljenje o Springu (sem o njegovom MVC frameworku koji je jedan od gorih sa kojima sam radio) ali mislim da je on svoju izuzetno značajnu ulogu već odigrao, i da više ne predstavlja značajan izvor novih ideja.

Po meni od svih Java frameworka najviše šanse da parira RoR po produktivnosti ima JBoss Seam. Imao sam prilike da radim i sa Trailsom i sa nekim drugim sličnim (RoR like) frameworcima, ali JBoss Seam mi deluje kao prava kombinacija. Baziran je da standardima poput EJB3 i JSF pri čemu znatno olakšava korišćenje oba API-ja. Gotovo da potpuno eliminiše potrebu za konfiguracionim fajlovima (baziran je na anotacijama pa čak i JSF beanovi ne moraju da se definišu kroz xml-ove) što znatno olakšava rad u poređenju sa Springom. Uz Seam ide i mali generator koda seamgen, uz pomoć kojeg je za par minuta moguće napraviti kostur aplikacije koja radi (slično kao RoR).
Inače, iza Seam-a stoji isti čovek koji je i autor Hibernate i EJB 3 specifikacije - Gavin King. Štaviše, Seam i Google Guice su pokrenuli WebBeans JSR koji ima za cilj standardizaciju ideja iz Seam-a, Guica, Apache Shale i drugih frameworka, pri čemu je plan da Seam bude referentna implementacija jednom kada JSR bude finalizovan. Slična stvar je bila i sa Hibernate i EJB 3 pre par godina.

[ alex @ 20.06.2007. 12:52 ] @
Koristim IntelliJ sa IdeaSpring plugin-om i Eclipse sa SpringIDE pluginom.
Subjektivni utisak je da je prva kombinacija znatno bolja, al' je druga kombinacija besplatna.
[ alex @ 20.06.2007. 12:58 ] @
Govoreci o Java MVC razlicitim okruzenjima, jel probao neko Tapestry? Trebalo bi da radim procenu tog alata za jedan novi projekat pa me zanimaju vasa iskustva.
[ anon315 @ 20.06.2007. 19:28 ] @
Aj ja sad malo da vratim na temu

Uglavio sam Spring u jedan projekat i mogu vam reci da sam odusevljen - koristim samo IoC za sada. Dosta mi je pocistio kod i omogucio da deklarativno promenim implementaciju, naterao me da radim po principu programming to interfaces i cela ta prica. Jedino sada iz import statementa vise nije jasno od cega moj kod zavisi Lako moze da se desi da ne ukljucim nesto od toga jer u compile timeu to nije potrebno, a onda u runtimu pucanje. Kako ovo resavate?

I imam drugo pitanje:

Situacija je jasna kada imam objekte koji imaju konstruktor koji ima druge objekte. Definisem sve te binove u xmlu i onda se referisem. Imamo singleton i prototype scope i to je sve ok.

Medjutim, potrebna mi je sledeca stvar: Imam klasu koja se zove SocketCommunicator i njen konstruktor prima Socket kao jedan jedini argument. E sad, problem je sto ja ne mogu da definisem bean koji ce da mi pravi socket, zato sto taj socket dobijam na sledeci nacin:

Code:

ServerSocket listener = new ServerSocket(port);
Socket client = listener.accept(); // Ovde nema new operatora!!!


Kako se ovo resava?

V
[ sanchi @ 20.06.2007. 19:45 ] @
1.) Prvi problem cu resiti tako sto cu da batalim Spring i predjem na google guice cim nadjem vremena
2.) koristis factory-method, iskopirah primer sa neta, pa prepravi: <bean id="fallbackBeans" factory-bean="rsacBeanLocator" factory-method="methodName">

[ sanchi @ 20.06.2007. 20:26 ] @
Citat:
alex: Govoreci o Java MVC razlicitim okruzenjima, jel probao neko Tapestry? Trebalo bi da radim procenu tog alata za jedan novi projekat pa me zanimaju vasa iskustva.


Ja sam se nesto malo igrala, ali nisam radila nista ozbiljno da bih dala neke pametne ocene, pa se nadam da ce neko sa vise iskustva da se javi.
Znam da mi se jako dopala cela ideja, da sam brzo pohvatala najbitnije stvari, i da sam svojevremeno utvrdila da je projekat zreo, ima lepu bazu korisnika, i da je veoma aktivan, sto mi je sve bilo prilicno bitno, i ostavilo jako dobar utisak.

Vidim da je izasla i verzija 5 (wow!), naidjoh na odlican tutorial: http://tapestry.apache.org/tapestry5/t5-tutorial.pdf
Javi sta si procenio. :)
[ dejankr @ 20.06.2007. 20:52 ] @
Citat:
alex: Govoreci o Java MVC razlicitim okruzenjima, jel probao neko Tapestry? Trebalo bi da radim procenu tog alata za jedan novi projekat pa me zanimaju vasa iskustva.


Pokrenuo sam novu temu o Tapestry http://www.elitesecurity.org/t266450-0#1614414, da ne bi išli dalje u OT u ovoj temi.
[ anon315 @ 20.06.2007. 22:32 ] @
Citat:
sanchi:2.) koristis factory-method, iskopirah primer sa neta, pa prepravi: <bean id="fallbackBeans" factory-bean="rsacBeanLocator" factory-method="methodName">


Hm, voleo bih da je stvar tako jednostavna :(

Ok, jasna mi je ideja, dakle, moj bean ce ustvari biti kreiran od strane drugog (factory) beana. To lepo zvuci, ali pazi kakvu ja situaciju imam:

Imam klasu koja se zove ThreadConversationWorker. Broj instanci ove klase je N (> 1). Ta klasa ima privatno polje: private Socket client; koje je setovano konstruktorom:

Code:

public ThreadConversationWorker(Socket client, Protocol protocol) {
        this.client = client;
        this.protocol = protocol;
}


Ono sto je bitno je da je client koji je predat konstruktoru potekao od listener.accept(), kako sam ranije naveo...

U nekom trenutku poziva se sledeci kod u toj instanci:

Code:

Communicator c = new SocketCommunicator(client);


Ja ovde ne zelim da vise zavisim od konkretne implementacije SocketCommunicator. E sad, da je ovaj client kreiran sa new ili da je singleton, znao bih sta cu.

Sad je pitanje kako da ovo sto si predlozila iskoristim da resim problem. Meni nije jasno sledece:

Sta ce u mom slucaju biti factory bean ciju cu metodu da posle koristim kao factory-method?

Ono sto je meni smisleno je da to upravo bude ThreadConversationWorker, jer on cuva client-a, pa bi u tom slucaju pomenuta metoda samo vracala to i kraj price.

Medjutim, problematicno je to sto u tom slucaju factory bean nije singleton, nego ce ih onda biti koliko ima i ThreadConversationWorker-a i sad dolazimo do krucijalnog pitanja: kako ja da uparim da se poziva bas factory-method PRAVE instance factory-beana???

[ anon315 @ 20.06.2007. 22:36 ] @
A da ne pominjem da je posebna prica sto mi ThreadConversationWorker uopste i nije menadzovan od strane Spring IoC-a (a mora da bude da bi Spring mogao da koristi njegov metod kao factory-method). Dakle, gornja pitanju su u slucaju da ga pretumbam da bude u nadleznosti Springa.

A jos bolje pitanje je kako da resim problem, bez da mi ThreadConversationWorker uopste bude u IoCu?
[ anon315 @ 20.06.2007. 23:19 ] @
Jao bre, pa gle prostog resenja:

Napravicu no arg konstruktor i tako sam resio problem koriscenja sa Springom, a onda cu samo da dodam metodu setClient(Socket client) u Communicator i rucno da setujem, posto dobijem instancu od Springa :)

Mada me ipak zanima kako bi se resilo da ne koristim ovaj workaround..
[ sanchi @ 20.06.2007. 23:20 ] @
A da napraviš onda interfejse Communicator, i SocketCommunicatorFactory koji će da ima metod getInstance koji prima Socket i vraca Communicator.

Springu onda prosleđuješ konkretnu implementaciju fabrike koja vraća konkretnu implementaciju Communicatora koji ti treba, u datom slučaju (SocketCommunicator), pri čemu je SocketCommunicatorFactory singleton.

Ili tako nešto...
[ sanchi @ 20.06.2007. 23:23 ] @
Da ne menjam ponovo.. dakle Factory intefejs treba da se zove CommunicatorFactory.
[ anon315 @ 21.06.2007. 12:23 ] @
Citat:
1.) Prvi problem cu resiti tako sto cu da batalim Spring i predjem na google guice cim nadjem vremena


A kako se to resava u Guice-u? Posto je poenta da postanes nezavistan od implementacije. Kako onda znas da si zavistan tj. kako te kompajler obavestava?
[ sanchi @ 21.06.2007. 13:35 ] @
Kod guicea se konfiguracija ne radi xml fajlovima, nego anotacijama i module klasama.

Ako na primer zelis da povezujes uvek isti interfejs sa istom implementacijom, definisaces bajnding u svom modulu:

Code:

public class MyModule implements Module {
    public void configure(Binder binder) {
        binder.bind(CommunicatorFactory.class).to(SocketCommunicatorFactory.class);
    }
}


Na taj nacin ne moras da brines o tome da li si napravio propust u definisanju paketa ili imena klase, ili da li ti klasa uopste nije u classpathu, posto ce tvoje okruzenje sve da proveri umesto tebe, pa nece biti neprijatnih runtime iznenadjenja.
[ anon315 @ 21.06.2007. 13:48 ] @
E pa to je super. Znaci taj problem je resen. Ali kao i obicno jedno resenje donosi neke prednosti, ali neke i mane.

Na primer: imas takvu Guice aplikaciju i tebi je u kodu zakucana implementacija prakticno.

I onda prodas nekom tvoj modul i das mu API (interfejse) da moze sam da napise implementaciju. Kada on to uradi, nece moci da izmeni implementaciju bez da vidi kod tvog modula. Ali ti to nekad ne zelis.

Jel to znaci da u tom slucaju Guice otpada? Ili postoji alternativa da se koristi i kod njega XML-ovi?
[ sanchi @ 21.06.2007. 15:55 ] @
Module ne sadrzi nista vise od springove xml konfiguracije, pa ne znam zasto klijent ne bi mogao da vidi njegov kod.

Module se injectuje na pravom mestu: na samom ulazu u aplikaciju, tako je lako izmenjiv.
Ja planiram da koristim dva modula: jedan za testove, i jedan u produkciji.

Mislim da guice po potrebi podrzava i eksterne konfiguracije, i to bas springove.
Ako vec pravim api library pa zelim da klijenti mogu lako da menjaju sve konkretne implementacije, ja bih u tom xmlu samo konfigurisala konkretnu implementaciju modul klase.

Iskreno, nisam se u praksi nikada susretala sa potrebom da menjam konkretne implementacije tako sto cu menjati spring konfiguraciju? Da li takvo nesto zaista postoji?
U nekoliko slucajeva kada mi je to bilo neophodno, a api je to podrzavao, sto je bilo svega par puta, cini mi se da sam to radila setovanjem nekih varijabli, a ne menjanjem springovog xml-a. A to se vec mnogo lakse moze izvesti u guice-u.

Ne znam.. ja imam srecu da nemam tako zahtevne klijente. Uglavnom nikad.
















[ dejankr @ 21.06.2007. 22:14 ] @
Citat:
sanchi: Iskreno, nisam se u praksi nikada susretala sa potrebom da menjam konkretne implementacije tako sto cu menjati spring konfiguraciju? Da li takvo nesto zaista postoji?


Slažem se.. Jako retko postoji potreba da se menja implementacija nekog interfejsa od nekog sa strane i lično mislim da je ta osobina Spring-a precenjena. Ne samo što u praksi to jako retko dešava, već i zato što promena implementacije nije jednostavna stvar. Primera radi, Spring ti omogućava da ti koristiš DAO interfejse a da mu onda podmećeš Hibernate, iBatis ili JDBC implementaciju. Ali stvar je da sve ove implementacije jako različito rade i teško da možeš da sve promene ostaviš samo u DAO klasi. Ako to i uspeš, rešenje ti sigurno neće biti optimizovano, jer teško da ćeš u DAO klasi moći da uhvatiš sva mesta gde koristiš lazi inicijalizaciju Hibernate objekata ili da praviš optimalne upite za zadatu situaciju.

Elem, nisam koristio Guice, ali evo kako u JBoss Seam-u možeš imati i "jare i pare". Tj. i da izbegneš velike XML-ove a i da imaš alternativne implementacije.


Code:

class Primer..{

     @In
     private UserManager userManager;

     ....
}


interface UserManager {
     ....
}


@Name("userManager")
class bean MyUserManager implements UserManager {
    .....
}



U ovom slučaju, sa anotacijom @In, ti kažeš da hoćeš da ti se injectuje bean koji po defaultu ima naziv isto kao promenljiva, dakle userManager, (mada možeš i eksplicitno da mu kažeš koji je naziv beana). U implementaciji interfejsa, ti kažeš kako ti se zove taj bean. Ako baš hoćeš da lako menjaš implementaciju, mislim da možeš staviti sve implementacije u poseban jar, tako da bi alternativna implementacija trebalo samo da bude definisana u drugom jar-u koji ćeš staviti umesto ovog defaultnog. Ipak, mislim da se jako retko javlja potreba za ovako nečim i mislim da je insistiranje na ovako nečem, nepotrebna komplikacija.
[ erno @ 21.06.2007. 23:12 ] @
Zdravo svima.

Kako sam se nasao u situaciji koju ste vjerovatno, ako ne svi, barem vecina prosli, zamolio bih za par savjeta. Dobio sam posao gdje trebam raditi sa Springom i Hibernateom. Prije nisam radio sa Springom jer sam za sve svoje projekte koristio framework iz vlastite radionice. Malo sam koristio Struts i Stripes -> nista posebno. Sad, posto se nalazim u takvoj situaciji, mislio sam porediti Framework-e, ali kad malo bolje razmislim u tom poredjenju mogu se malo izgubiti. Zato sam odlucio pridruziti se diskusiji i mozda mi neko ipak pomogne posto vidim da ima ljudi/djevojaka koji se kuze u ovo. Ono sto me licno smeta su ova silna XML podesavanja, prepravljanja, ali sta ces-mora se. Imao bih, dakle, par pitanja:

- odakle poceti sa Springom (Hibernate je tema za neku drugu pricu, sad me zanima samo Spring). zaobidjimo odgovore tipa: springframeworks.org i sl. ono sto mi
treba je tutorial za debila totalnog :-)
- neka dobra knjiga za preporuku??
- IDE preporuka?
- sve ostalo sto ide uz Spring, sto je vama pomoglo da skontate ovaj framework.

Unapred zahvalan za svaku pomoc.

pozzz
[ anon315 @ 22.06.2007. 08:21 ] @
Ako si pazljivo citao post, primetio si da sam naveo novu verziju knjige Spring in Action. Ja sam je narucio, ali je preorder, pa ce joj trebati metar dana. Jos uvek ne moze da se skine "na kvarnjaka". Neke moje kolege koriste Spring in Action za verziju 1.x, a onda koriste posle toga spring-reference koji si pomenuo, koji onda vec ima smisla. Ja cu se strpeti dok mi dodje knjiga, jer mi nije hica...
[ ana @ 22.06.2007. 17:17 ] @
Dejane, hoces da kazes da sa Jboss Seam-m nema potrebe za XMl konfig fajlovima - jel potpuno ili parcijalno resenje ?
[ dejankr @ 22.06.2007. 20:44 ] @
Ne baš... Postoji više konfiguracionih fajlova, međutim, nemaš potrebe često da ih diraš. Oni mogu da se generišu na početku sa, seamgen alatom, i ukoliko ti ne treba nešto specijalno, uglavnom i ne moraš da ih menjaš. Navigaciju je moguće handlovati i bez konfguracionih fajlova, ali mi se čini da je ipak pametnije da to bude u konfiguracionom fajlu.