|
@@ -0,0 +1,56 @@
|
|
|
+package com.sf.self.lxl;
|
|
|
+import java.lang.reflect.Field;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * ClassName: BeanFactory
|
|
|
+ * Package: com.xl.self
|
|
|
+ * Description:
|
|
|
+ *
|
|
|
+ * @Author 李小龙
|
|
|
+ * @Create 2024/1/9 15:32
|
|
|
+ * @Version 1.0
|
|
|
+ */
|
|
|
+//生产bean的工厂
|
|
|
+// 先要获取对bean的配置 id class
|
|
|
+// 存储多个bean的配置 beanDefinedList
|
|
|
+public class BeanFactory {
|
|
|
+ //user com.xl.User
|
|
|
+ private List<BeanDefined> beanDefinedList;
|
|
|
+
|
|
|
+ public BeanFactory(List<BeanDefined> beanDefinedList) {
|
|
|
+ this.beanDefinedList = beanDefinedList;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<BeanDefined> getBeanDefinedList() {
|
|
|
+ return beanDefinedList;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setBeanDefinedList(List<BeanDefined> beanDefinedList) {
|
|
|
+ this.beanDefinedList = beanDefinedList;
|
|
|
+ }
|
|
|
+ //模拟通过beanId 获取bean
|
|
|
+ //返回的是对象
|
|
|
+ public Object getBean(String beanId){
|
|
|
+ Object obj = null;
|
|
|
+ for (BeanDefined beanDefined : beanDefinedList) {
|
|
|
+ //判断当前的bean是否是传进来的id
|
|
|
+ if (beanDefined.getBeanId().equals(beanId)){
|
|
|
+ String classPath = beanDefined.getClassPath();
|
|
|
+ List<PropertyDefined> propertyDefinedList = beanDefined.getPropertyDefinedList();
|
|
|
+ try {
|
|
|
+ Class beanClass = Class.forName(classPath);
|
|
|
+ obj = beanClass.getDeclaredConstructor().newInstance();
|
|
|
+ for (PropertyDefined propertyDefined : propertyDefinedList) {
|
|
|
+ Field declaredField = beanClass.getDeclaredField(propertyDefined.getName());
|
|
|
+ declaredField.setAccessible(true);
|
|
|
+ declaredField.set(obj,propertyDefined.getValue());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return obj;
|
|
|
+ }
|
|
|
+}
|