001--Spring关于JavaBean创建

2018-04-22  本文已影响5人  糖纸疯了

话题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);
    }
上一篇 下一篇

猜你喜欢

热点阅读