Apache Commons BeanUtils
1. Pregled
Apache Commons BeansUtils sadrži sve alate potrebne za rad s Java grahom.
Jednostavno rečeno, bean je jednostavna Java klasa koja sadrži polja, getere / postavljače i konstruktor bez argumenata.
Java pruža mogućnosti refleksije i introspekcije za identificiranje metoda dobivača-postavljača i njihovo dinamičko pozivanje. Međutim, ove API-je može biti teško naučiti i mogu zahtijevati od programera da napišu šifru za izvršavanje najjednostavnijih operacija.
2. Ovisnosti Mavena
Evo ovisnosti o Mavenu koju treba uključiti u POM datoteku prije nego što je upotrijebite:
commons-beanutils zajednički-beanutils 1.9.3
Najnoviju verziju možete pronaći ovdje.
3. Izrada Java Bean-a
Stvorimo dvije klase graha Tečaj i Student s tipičnim metodama getera i setera.
javni tečaj {privatni naziv niza; privatni kodovi s popisa; privatna karta enrollStudent = novi HashMap (); // standardni getteri / postavljači}
student javnog razreda {naziv privatnog niza; // standardni getteri / postavljači}
Imamo Tečaj razred koji ima naziv predmeta, šifre predmeta i više upisanih studenata. Upisani studenti identificirani su jedinstvenim ID-om upisa. Tečaj razred održava upisane studente u a Karta objekt gdje je ID upisa ključ, a studentski objekt bit će vrijednost.
4. Pristup nekretnini
Svojstva graha mogu se podijeliti u tri kategorije.
4.1. Jednostavno svojstvo
Svojstva s jednom vrijednošću nazivaju se i jednostavnim ili skalarnim.
Njihova vrijednost može biti primitivan (poput int, float) ili složeni tip objekata. BeanUtils ima PropertyUtils klasa koja nam omogućuje izmjenu jednostavnih svojstava u Java Beanu.
Evo primjera koda za postavljanje svojstava:
Tečaj tečaja = novi tečaj (); Naziv niza = "Računalne znanosti"; Kodovi popisa = Arrays.asList ("CS", "CS01"); PropertyUtils.setSimpleProperty (tečaj, "ime", ime); PropertyUtils.setSimpleProperty (tečaj, "kodovi", kodovi);
4.2. Indeksirana imovina
Indeksirana svojstva imaju zbirku kao vrijednost kojoj se može pojedinačno pristupiti pomoću indeksnog broja. Kao proširenje JavaBean-a, BeanUtils smatra java.util.Popis vrste vrijednosti kao i indeksirane.
Možemo izmijeniti pojedinačnu vrijednost indeksiranog svojstva pomoću a PropertyUtils'ssetIndexedProperty metoda.
Evo primjera koda koji mijenja indeksirano svojstvo:
PropertyUtils.setIndexedProperty (tečaj, "kodovi [1]", "CS02");
4.3. Mapirana imovina
Bilo koje svojstvo koje ima java.util.Map kao što se osnovni tip naziva mapirano svojstvo. BeanUtils nam omogućuje ažuriranje pojedinačne vrijednosti na karti pomoću a String-cijenjeno ključ.
Evo primjera koda za izmjenu vrijednosti u mapiranom svojstvu:
Student student = novi Student (); Niz studentName = "Joe"; student.setName (studentName); PropertyUtils.setMappedProperty (tečaj, "enrollStudent (ST-1)", student);
5. Pristup ugniježđenom vlasništvu
Ako je vrijednost svojstva objekt i trebamo pristupiti vrijednosti svojstva unutar tog objekta - to bi bio pristup ugniježđenom svojstvu. PropertyUtils dopustite nam pristup i izmijeniti ugniježđena svojstva također.
Pretpostavimo da želimo pristupiti svojstvu imena Student razred kroz Tečaj objekt. Mogli bismo napisati:
Naziv niza = course.getEnrollStudent ("ST-1"). GetName ();
Vrijednostima ugniježđenih svojstava možemo pristupiti pomoću getNestedProperty i izmijenite ugniježđeno svojstvo pomoću setNestedProperty metode u PropertyUtils. Evo koda:
Student student = novi Student (); Niz studentName = "Joe"; student.setName (studentName); String nameValue = (String) PropertyUtils.getNestedProperty (tečaj, "enrollStudent (ST-1) .name");
6. Kopirajte svojstva graha
Kopiranje svojstava jednog objekta u drugi objekt programerima je često zamorno i sklono pogreškama. BeanUtils razred pruža a copyProperties metoda koja kopira svojstva izvornog objekta u ciljni objekt gdje je ime svojstva isto u oba objekta.
Stvorimo još jedan razred graha kao Tečaj stvorili smo gore s istim svojstvima, osim što ih neće imati upisaoStudent svojstvo umjesto toga ime svojstva će biti studenti. Nazovimo taj razred CourseEntity. Predavanje bi izgledalo ovako:
javna klasa CourseEntity {naziv privatnog niza; privatni kodovi s popisa; studenti na privatnoj mapi = novi HashMap (); // standardni getteri / postavljači}
Sada ćemo kopirati svojstva Tečaj prigovoriti CourseEntity objekt:
Tečaj tečaja = novi tečaj (); course.setName ("Računalne znanosti"); course.setCodes (Arrays.asList ("CS")); course.setEnrollStudent ("ST-1", novi Student ()); CourseEntity courseEntity = novi CourseEntity (); BeanUtils.copyProperties (courseEntity, course);
Ne zaboravite da će se kopirati samo svojstva s istim imenom. Stoga neće kopirati imovinu upisaoStudent u Tečaj razreda jer u. nema imovine s istim imenom CourseEntity razred.
7. Zaključak
U ovom smo kratkom članku pregledali klase uslužnih programa koje nudi BeanUtils. Također smo proučavali različite vrste svojstava i kako možemo pristupiti i izmijeniti njihove vrijednosti.
Konačno, ispitali smo pristup ugniježđenim vrijednostima svojstava i kopiranje svojstava jednog objekta u drugi objekt.
Naravno, mogućnosti refleksije i introspekcije u Java SDK-u također nam omogućuju dinamički pristup svojstvima, ali može biti teško naučiti i zahtijevati neki standardni obrazac. BeanUtils omogućuje nam pristup i izmjenu ovih vrijednosti jednim pozivom metode.
Isječke koda možete pronaći na GitHubu.