公司制作网站价格表,津云最新发布消息天津新增多少,兰州seo技术优化排名公司,一键生成房屋设计图Bean工厂回顾下前面的知识#xff0c;通过加载配置文件获取应用基础包名#xff0c;加载基础包名下所有的类#xff0c;获取Controller,Service类。到目前为止#xff0c;我们只是加载了类#xff0c;但是无法通过获取的类来实例化对象。因此需要一个反射工具#xff0c;…Bean工厂回顾下前面的知识通过加载配置文件获取应用基础包名加载基础包名下所有的类获取Controller,Service类。到目前为止我们只是加载了类但是无法通过获取的类来实例化对象。因此需要一个反射工具来实例化类。创建一个Bena工厂来生产(实例化Bean类对象)Bean。newInstance()方法实例化目标类invokeMethod()通过反射机制来调用类中的方法setField()通过反射机制为类成员遍历赋值。//Bean工厂public class BeanFactory {/*** 创建实例** param clazz* return*/public static Object newInstance(Class clazz) {Object instance;try {instance clazz.newInstance();} catch (Exception e) {throw new RuntimeException(e);}return instance;}/*** 方法调用** param obj* param method* param args* return*/public static Object invokeMethod(Object obj, Method method, Object... args) {Object result;try {method.setAccessible(true);result method.invoke(obj, args);} catch (Exception e) {throw new RuntimeException(e);}return result;}/*** 设置成员变量值** param obj* param field* param value*/public static void setField(Object obj, Field field, Object value) {try {field.setAccessible(true);field.set(obj, value);} catch (Exception e) {throw new RuntimeException(e);}}}
相关文章: