首先,我们先看看什么是JavaBean:
1. JavaBean:标准的Java类
- 类必须被public修饰
- 必须提供空参的构造器
- 成员变量必须使用private修饰
- 提供公共setter和getter方法
成员变量和属性的区别:
成员变量:成员变量是定义在类里面的,是类中的属性;
属性:setter和getter方法截取后的产物(属性大多数和成员变量是一样的,也可以不一样) 例如:getUsername() --> Username--> username
注意:在许多框架配置文件中都是对于属性进行操作,而非JavaBean中的成员变量。
工程结构:

1.创建lib文件夹,复制两个jar包,commons-beanutils-1.8.0.jar;commons-logging-1.2.jar
2.User
package com.company;
public class User {
private int id;
private String username;
private String password;
private String gender;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return gender;
}
public void setSex(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", gender='" + gender + '\'' +
'}';
}
}
分析:
成员变量:id, username, password, gender(与属性不同)
属性:id, username, password, sex(与成员变量不同)
BeanUtilsTest.java
package com.company;
import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test;
import java.lang.reflect.InvocationTargetException;
public class BeanUtilsTest {
@Test
public void test(){
User user = new User();
try {
BeanUtils.setProperty(user, "gender", "male");
System.out.println("gender..." + user);
BeanUtils.setProperty(user, "sex", "female");
System.out.println("sex......" + user);
System.out.println("-----------------");
String gender2 = BeanUtils.getProperty(user, "sex");
System.out.println("sex......" + gender2);
// String gender1 = BeanUtils.getProperty(user, "gender");
// System.out.println("gender......" + gender1);//Error, NoSuchMethodException
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}
运行结果:
gender...User{id=0, username='null', password='null', gender='null'}
sex......User{id=0, username='null', password='null', gender='female'}
-----------------
sex......female
Process finished with exit code 0
结论:
注意:在许多框架配置文件中都是对于属性进行操作,而非JavaBean中的成员变量。
本文深入解析JavaBean的概念及其实现细节,包括类的结构、成员变量与属性的区别,以及如何利用Apache Commons BeanUtils库操作JavaBean的属性。
220

被折叠的 条评论
为什么被折叠?



