由Spring引出的一些瞎想(2)

之前利用List<List>进行创建实例,主要存在的问题是要求各个类的属性的个数必须一致。


为了能够可以不受这个限制,考虑用Map来存放XML中的配置信息


由Spring引出的一些瞎想(2)


因为要创建XML中配置的所有的对象,所以还是用List来储存,不同的的是List<Map>,用map来储存创建实例所需要的全部信息。每个map除了需要有创建实例所需要的属性以外,还要有该类的全类名。这个全类名也从XML中获取。

由Spring引出的一些瞎想(2)




同样,在各个类中也需要重新创建构造方法,接收一个Map<String,String>来创建实例对象。


由Spring引出的一些瞎想(2)


有了这个构造方法后,BeanFactory类就可以接收一个Map<String,String>来创建Bean。


由Spring引出的一些瞎想(2)

然后就可以得到在XML文件中所创建的所有对象的实例

由Spring引出的一些瞎想(2)



梳理一下整个过程:

1.DocumentParse类,负责解析XML文件,得到一个List<Map>,Map<String,String>储存要创建的对象的全类名,和属性的赋值。

2.BeanFactory类,负责接收一个Map<String,String>,根据得到的内容创建Object



 存在的问题:

虽然可以根据具体的类创建对象,但是依然要求每个类提供构造方法。