Apache Commons BeanUtils

1. סקירה כללית

Apache Commons BeansUtils מכיל את כל הכלים הדרושים לעבודה עם שעועית Java.

במילים פשוטות, שעועית היא מחלקות Java פשוטות המכילות שדות, גטרים / סטרים ובונה ללא ויכוח.

ג'אווה מספקת יכולות השתקפות והתבוננות פנימית לזיהוי שיטות קביעת גטר וקוראים להן באופן דינמי. עם זאת, ממשקי API אלה עשויים להיות קשים ללמוד ועלולים לדרוש ממפתחים לכתוב קוד boilerplate כדי לבצע פעולות פשוטות ביותר.

2. תלות Maven

הנה התלות של Maven שיש לכלול בקובץ POM לפני השימוש בו:

 commons-beanutils commons-beanutils 1.9.3 

את הגרסה החדשה ביותר תוכלו למצוא כאן.

3. יצירת שעועית ג'אווה

בואו ניצור שני שיעורי שעועית קוּרס ו סטוּדֶנט בשיטות טיפוסיות וקובעות טיפוסיות.

קורס בכיתה ציבורית {שם מחרוזת פרטי; קודי רשימה פרטיים; מפה פרטית enrolledStudent = חדש HashMap (); // סטנדרטים / סטרים סטנדרטיים} 
כיתה ציבורית סטודנט {פרטי מחרוזת; // סטנדרטים / סטרים סטנדרטיים}

יש לנו קוּרס כיתה שיש לה שם קורס, קודי קורסים ותלמידים רשומים מרובים. סטודנטים הרשומים מזוהים על ידי מזהה הרשמה ייחודי. קוּרס בכיתה מקיימת סטודנטים רשומים ב מַפָּה אובייקט שבו מזהה ההרשמה הוא מפתח, ואובייקט התלמיד יהיה הערך.

4. גישה לנכסים

ניתן לחלק את מאפייני שעועית לשלוש קטגוריות.

4.1. נכס פשוט

מאפיינים בעלי ערך יחיד נקראים גם פשוטים או סקלריים.

הערך שלהם עשוי להיות פרימיטיבי (כמו int, float) או אובייקטים מסוג מורכב. ל- BeanUtils יש PropertyUtils מחלקה המאפשרת לנו לשנות מאפיינים פשוטים ב- Java Bean.

הנה הקוד לדוגמא להגדרת המאפיינים:

קורס קורס = קורס חדש (); שם מחרוזת = "מדעי המחשב"; רשימת קודים = Arrays.asList ("CS", "CS01"); PropertyUtils.setSimpleProperty (קורס, "שם", שם); PropertyUtils.setSimpleProperty (קורס, "קודים", קודים);

4.2. נכס צמוד

לנכסים שנוספו לאינדקס יש אוסף כערך אליו ניתן לגשת בנפרד באמצעות מספר אינדקס. כתוסף ל- JavaBean, BeanUtils שוקל java.util.List הקלד ערכים גם באינדקס.

אנו יכולים לשנות ערך אינדיבידואלי של נכס באינדקס באמצעות a PropertyUtilssetIndexedProperty שיטה.

הנה דוגמה לשינוי קוד מאפיין באינדקס:

PropertyUtils.setIndexedProperty (קורס, "קודים [1]", "CS02");

4.3. נכס ממופה

כל נכס שיש לו java.util.Map כמו הסוג הבסיסי נקרא מאפיין ממופה. BeanUtils מאפשר לנו לעדכן את הערך האישי במפה באמצעות a לפי מחרוזת מַפְתֵחַ.

הנה הקוד לדוגמא לשינוי הערך במאפיין ממופה:

סטודנט סטודנט = סטודנט חדש (); מחרוזת studentName = "ג'ו"; student.setName (studentName); PropertyUtils.setMappedProperty (קורס, "נרשם סטודנט (ST-1)", סטודנט);

5. גישה לרכוש מקונן

אם ערך מאפיין הוא אובייקט ואנחנו צריכים לגשת לערך מאפיין בתוך אותו אובייקט - זה יהיה גישה לנכס מקונן. PropertyUtils מאפשרים לנו גישה ו- לשנות מאפיינים מקוננים גם כן.

נניח שאנחנו רוצים לגשת למאפיין השם של סטוּדֶנט בכיתה דרך קוּרס לְהִתְנַגֵד. אנו עשויים לכתוב:

שם מחרוזת = course.getEnrolledStudent ("ST-1"). GetName ();

אנו יכולים לגשת לערכי המאפיינים המקוננים באמצעות getNestedProperty ולשנות את המאפיין המקונן באמצעות setNestedProperty שיטות ב PropertyUtils. הנה הקוד:

סטודנט סטודנט = סטודנט חדש (); מחרוזת studentName = "ג'ו"; student.setName (studentName); מחרוזת nameValue = (String) PropertyUtils.getNestedProperty (קורס, "נרשם סטודנט (ST-1) .name");

6. העתק מאפייני שעועית

העתקת מאפיינים של אובייקט אחד לאובייקט אחר לעיתים קרובות מייגעת ונוטה לטעויות עבור מפתחים. BeanUtils הכיתה מספקת א copyProperties שיטה שמעתיקה את המאפיינים של אובייקט המקור לאובייקט היעד כאשר שם המאפיין זהה בשני האובייקטים.

בואו ליצור עוד שיעור שעועית כ קוּרס שיצרנו לעיל עם אותם מאפיינים אלא שלא יהיה לו נרשם סטודנט במקום זאת שם הנכס יהיה סטודנטים. בואו נקרא את הכיתה הזו קורס אינטנסיביות. הכיתה תיראה כמו:

כיתה ציבורית CourseEntity {שם מחרוזת פרטי; קודי רשימה פרטיים; תלמידי מפה פרטית = HashMap חדש (); // סטנדרטים / סטרים סטנדרטיים}

כעת נעתיק את המאפיינים של קוּרס להתנגד ל קורס אינטנסיביות לְהִתְנַגֵד:

קורס קורס = קורס חדש (); course.setName ("מדעי המחשב"); course.setCodes (Arrays.asList ("CS")); course.setEnrolledStudent ("ST-1", סטודנט חדש ()); CourseEntity courseEntity = CourseEntity חדש (); BeanUtils.copyProperties (קורס אנטי, קורס);

זכור שזה יעתיק את המאפיינים באותו שם בלבד. לכן, הוא לא יעתיק את הנכס נרשם סטודנט ב קוּרס בכיתה כי אין נכס בשם זהה קורס אינטנסיביות מעמד.

7. מסקנה

במאמר מהיר זה עברנו על שיעורי השירות המסופקים על ידי BeanUtils. בדקנו גם סוגים שונים של מאפיינים וכיצד נוכל לגשת לערכים שלהם ולשנות אותם.

לבסוף בדקנו גישה לערכי נכסים מקוננים והעתקת מאפייני אובייקט אחד לאובייקט אחר.

כמובן, יכולות השתקפות והתבוננות פנימית ב- SDK Java מאפשרות לנו גם לגשת למאפיינים באופן דינמי, אך זה יכול להיות קשה ללמוד ולדרוש קצת קוד לדוד. BeanUtils מאפשר לנו לגשת ולשנות ערכים אלה באמצעות שיחת שיטה אחת.

ניתן למצוא קטעי קוד ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found