这章主要是补充一些ioc创建对象的方式,ioc容器在写好<bean></bean>的时候就已经创建对象了。在之前的例子中,一直都是无参的构造方法。下面给出有参的构造方法的对象的创建,没有什么难点重点,只是记录一下。
有参构造函数构造方法有几种。 第一种方法,通过参数下标来设置。 java代码:package cn.sxt.ov;public class User { private String name; private int age; /**有参数函数构造方法*/ public User(String name,int age){ this.name=name; this.age=age; } public void show(){ System.out.println("俺是"+name+",今年"+age); }}
xml文件写法:
constructor-arg关键字就是用来构造有参函数时传参数的。index是参数的下标,从0开始,<constructor-arg index="0" value="张三"/>就是第一个参数传张三。
第二种,通过名字来传参数,就和以前给变量赋值一样:第三种,通过参数类型来设置
通过参数类型来设置,如果有一样的类型,就按照先后顺序,注意String可以换成java.lang.String。但是int换成java.lang.Integer或者Integer就会报错。不知道为什么。
通过工厂方法来创建对象
这里只需要简单了解一下就行了。知道有这么个东西,因为spring本身就提供了工厂类,可以用轮子,干嘛造轮子。
静态工厂:
先写一个简单的静态工厂,这是一个简单的静态工厂,通过newInstance方法来创建对象
package cn.sxt.factory;import cn.sxt.ov.User;public class UserFactory { private static User newInstance(String name,int age,String sex){ return new User(name,age,sex); }}
xml代码
结果:
![](https://oscimg.oschina.net/oscnet/830399cb456690b51725d33cb50238e80e6.jpg)
动态工厂
新建动态工厂
package cn.sxt.factory; import cn.sxt.ov.User;public class UserDynamicFactory { private User newInstance(String name,int age,String sex){ return new User(name,age,sex); }}
xml文件,这里需要改一下静态工厂代码,将静态工厂的class改成factory-bean,然后引用动态工厂的id。
注意这里的值还是在user1里面设置的。