spring创建对象的方式
最近在学习spring框架,就了解到spring框架,有两大核心,一个是“IOC”,即控制反转。spring可以看成一个容器,它可以帮助我们管理并创建对象。就不再是我们程序员自己去new。
1、我们先创建实体商品类(省略set,get)
2、我们创建配置文件application.xml,这也是我们spring中十分重要的配置文件,接着我们将我们的对象注入到spring容器。
3---1---我们编写测试类,测试该goods1对象是否能够通过spring容器创建
通过结果发现,我们的goods确实被创建,而且确实通过该类的无参构造方法创建的。
3---2---下面我们在试一试通过Good的无参构造方法创建对象,通过set赋值,下面我们修改application.xml配置文件,
测试类:
运行结果:
可以看到,我们依然是通过无参构造方法创建的对象,只是通过set方法赋值的(可以通过application.xml的property标签看出,property就是属性的意思嘛),并且这个是先创建对象,后面再赋值的。
为了验证该结论呢,我们把Good的set方法注释掉
可以看到,报出错误,我们的name属性确实是缺少set方法。
3---3-----下面我们就试试通过Good的全参构造方法创建对象,也是一样修改application.xml文件。
运行结果:
可以看到,我们的全参构造方法被调用了,good3确实被创建了,并且也成功赋值。
4----1----,在我们spring中也有一种方法创建对象,就是通过工厂方法创建,下面我们编写工厂类
同样我们去编写application.xml文件,为了输出结果简洁,我把前面的内容注释掉。
测试类:
运行结果:
可以看到,我们通过我们的工厂的静态方法,创建了good4。
注意:一定要是静态方法,即static修饰,我们注释掉GoodsFactory的static关键字,结果↓
可以看到,报出错误,没有找到匹配的静态方法
4----2-----
下面我们试一试非静态方法,同样修改配置文件
测试类:
运行结果:
可以看到,我们是先创建的商品工厂,再创建的商品类,这也是符合逻辑的。
下面我们小结一下:
1---通过类的无参构造方法创建
2--通过类的有参构造方法创建(通过set赋值或者是直接有参构造方法赋值)
3--通过工厂方法(静态工厂方法或者是非静态方法)