|
| Java-bønner Fra : Preben Holm |
Dato : 07-07-05 20:21 |
|
Hej alle
Jeg mangler en helt klar definition på hvad en java-bønne egentlig er.
Jeg har læst at det er en samling af klasser som kan udføre en funktion.
Den har nogle egenskaber (properties) som kan hentes/sættes med
get/setProperty()
Det er helt vildt smart, men hvorfor? og hvad er den præcise definition?
Har læst tonsvis af artikler, men indtil videre har ingen forklaret
andet end hvad jeg har skrevet i ovenstående!
Med venlig hilsen
Preben Holm
| |
Filip Larsen (07-07-2005)
| Kommentar Fra : Filip Larsen |
Dato : 07-07-05 19:06 |
|
Preben Holm skrev
> Jeg mangler en helt klar definition på hvad en java-bønne egentlig er.
Kort sagt kan man måske sige, at enhver klasse hvor
java.beans.Introspector.getBeanInfo returnerer en BeanInfo instans uden
exception og hvor instanser af klassen opfører sig "ordentligt" er en
javabønne. I praksis kan en javabønne spænde fra en lille 10-liniers
enkeltstående klasse til en kompleks sag med mange forskellige klasser
og BeanInfo support, så hvis du leder efter en helt enkelt definition
vil den sikkert ikke være præcis nok til at dække "formålet" med alle
variationsmulighederne.
> Har læst tonsvis af artikler, men indtil videre har ingen forklaret
> andet end hvad jeg har skrevet i ovenstående!
Hvis du ikke allerede har læst den, så kan jeg anbefale spec'en:
http://java.sun.com/products/javabeans/docs/spec.html
Der er også en JavaBean Tutorial, men den har du jo nok set:
http://java.sun.com/docs/books/tutorial/javabeans/index.html
Mvh,
--
Filip Larsen
| |
Flemming Mertz (08-07-2005)
| Kommentar Fra : Flemming Mertz |
Dato : 08-07-05 07:02 |
|
Hej Preben
Den oprindelige ide i JavaBeans var, at det skulle være selvforklarende
software komponenter, selvforklarende over for anden kode, vel at mærke. Ved
at tilbyde get og set metoder med en præcis navnekonvention, kan man ved
hjælp af reflection udlede hvilke egenskaber en given bønne har. Det åbner
mulighed for at et IDE kan benytte en allerede kompileret komponent, blot
ved at du trækker den ind i din applikation, og sætter de egenskaber den nu
har tilgængelige, så det passer i din applikation.
Begrebet skulle have gjort en farlig masse komponenter tilgængelige, både
kommercielle og gratis, så man stort set kunne programmere blot ved lige at
samle lidt forskellige beans, og konfigurere dem. Virkeligheden er ikke helt
nået dertil endnu, og Beans i dag bliver en blot brugs som data containeres,
som blot er en struct med get og set metoder, eller lidt mere avanceret, i
J2EE. Men den oprindelige ide, med et komponent der eslv ved hvordan den
skal tegne sig i en GUI applikation, som for eksempel en lommeregner bean,
er vist tabt.
Mvh,
Flemming
"Preben Holm" <64bitNOSPAMNO@mailme.dk> skrev i en meddelelse
news:42cd6453$0$18645$14726298@news.sunsite.dk...
> Hej alle
>
>
> Jeg mangler en helt klar definition på hvad en java-bønne egentlig er.
>
> Jeg har læst at det er en samling af klasser som kan udføre en funktion.
> Den har nogle egenskaber (properties) som kan hentes/sættes med
> get/setProperty()
>
> Det er helt vildt smart, men hvorfor? og hvad er den præcise definition?
> Har læst tonsvis af artikler, men indtil videre har ingen forklaret
> andet end hvad jeg har skrevet i ovenstående!
>
>
> Med venlig hilsen
> Preben Holm
| |
Kristian Thy (08-07-2005)
| Kommentar Fra : Kristian Thy |
Dato : 08-07-05 10:18 |
|
Quoth Flemming Mertz:
> Ved at tilbyde get og set metoder med en præcis navnekonvention, kan
> man ved hjælp af reflection udlede hvilke egenskaber en given bønne
> har.
Er pointen netop ikke at man _ikke_ behøver reflection for at finde ud
af det - man kan bare se hvilke metoder bønnen byder på? Hvis man
alligevel hiver hele reflection-apparatet frem kan man jo også bare glo
i private felter på ikke-bønner.
Det smarte ved getters og setters frem for reflection-pilleri er jo at
man kan have logik i dem, så man fx ikke kan indsætte "forkerte" værdier
i bønnens felter.
--
\\kristian
| |
Casper (08-07-2005)
| Kommentar Fra : Casper |
Dato : 08-07-05 11:46 |
|
Jeg havde også svært ved at forstå bean konceptet i starten. Her er mine
erfaringer siden.
En bean beskriver en entitets attributter eller "state", og eksponerer
disse via get/set/is metoder (afhængig af type). Nogle definitioner (og
noget software) vil brokke sig hvis du inkluderer metoder som IKKE
hedder noget med get/set/is.
- Som DTO:
I frameworks som f.eks. Oracle's ADF, er det kun muligt at
returnere/sende et enkelt objekt imellem komponenter hvorfor beans
bruges til at indkapsle en masse småting, under ét objekt. Ofte kaldes
disse beans dog så for et DTO (Data Transfer Object).
- Over webservice:
Webservices serialiserer Java klasse instanser til XML og tilbage igen,
hvorfor der er krav til hvilke typer der benyttes og hvordan objekterne
benytter dem. Hertil udnyttes også beans, så kan enhver variabel i XML
af en simpel type (f.eks. xsd:string CarModel), automatisk
deserialiseres til en Java bean instans ved at bruge dens setCarModel()
metode.
Casper
| |
|
|