话题1.在配置文件中的JavaBean如何被创建
Spring配置JavaBean的方式
<bean class="com.vincent.bean">
<property name="age" value="14"></property>
<property name="name" value="小明"></property>
<property name="phone" value="153****8680"></property>
</bean>
// Spring关于Bean的注入
public class TestBean {
public static void main(String[] args) {
// 创建Bean对象工厂对象
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
// 创建对象构造类
BeanDefinitionBuilder beanBuilder = BeanDefinitionBuilder.genericBeanDefinition(User.class);
// 创建对象定义
AbstractBeanDefinition beanDefinition = beanBuilder.getBeanDefinition();
TestBean.addProperty(beanDefinition);
// 创建Bean对象工厂对象
beanFactory.registerBeanDefinition("user", beanDefinition);
User user = beanFactory.getBean(User.class);
System.out.println("---------------创建对象成功:"+user);
}
// 添加对象的属性方法
public static void addProperty(AbstractBeanDefinition beanDefinition) {
MutablePropertyValues propertyValues = new MutablePropertyValues();
propertyValues.add("age", 14);
propertyValues.add("name", "小明");
propertyValues.add("phone", "153****8680");
beanDefinition.setPropertyValues(propertyValues);
}
}
// 省略相关的Set,Get,Constructor
public class User {
private String name;
private int age;
private String phone;
}
话题2.构造对象实例,创建JavaBean
public static void main(String[] args) throws Exception{
// 使用构造器方法构造对象
Class<?> clazz = Class.forName("com.vincent.bean.User");// 根据类名找到这个类
Object object = clazz.newInstance();// 用类创建一个实例对象
// 添加属性方法
TestBean.addMethod(clazz, object);
System.out.println("----------user:"+object);
}
// 为创建的实例对象添加方法
public static void addMethod(Class<?> clazz, Object object) throws Exception{
//java.lang.reflect.Method看到类名应该就明白了
Method method1 = clazz.getMethod("setName", String.class);
Method method2 = clazz.getMethod("setAge", int.class);//不能使用Integer.class
method1.invoke(object, "xiaoming");
method2.invoke(object, 10);
}
话题3.构造器方法,创建JavaBean
public static void main(String[] args) throws Exception {
// 使用构造器方法构造对象
Class<?> clazz = Class.forName("com.vincent.bean.User");// 根据类名找到这个类
// 前提是必须有相对应的构造方法
Constructor<?> constructor = clazz.getConstructor(String.class, String.class, int.class);
Object object = constructor.newInstance("xiaoming","153****8680",10);
System.out.println("----------user:"+object);
}
网友评论