问题:
学习了SpringIOC的基本使用后,发现对象的创建由我们自己创建变成了由Spring容器根据配置文件来帮助我们创建,我们直接从Spring容器中获取创建好的对象使用即可,那么既然对象不是我们创建的,那么如果我们需要一个带有初始化数据的对象,那该怎么办嘞?
解决:
我们是通过配置文件来告诉Spring容器帮我们创建哪些对象并管理,那么我们也只能通过配置文件来告诉Spring如何帮助我们创建对象。
实现:
在配置文件中声明对象的创建方式
内容:
1.通过构造器方式:
<!--通过无参构造器-->
<bean id="user" class="com.bjsxt.pojo.User"></bean>
<!--通过有参构造器
在bean标签中使用constructor-arg子标签,一个constructor-arg子标签构造器的一个参数。
再使用constructor-arg标签的属性
index:参数的角标(从0开始)
type:参数的类型
name:参数的名字
value:参数的值
唯一的确定一个构造器
缺点:
必须在类中声明对应的构造器
-->
<bean id="user1" class="com.bjsxt.pojo.User">
<constructor-arg index="0" type="java.lang.String" name="name" value="张三"></constructor-arg>
<constructor-arg index="1" type="java.lang.String" name="pwd" value="123"></constructor-arg>
</bean>
2.通过get/set方法:
<!--通过ge/set方法
在bean标签下使用property标签,一个property标签相当于调用一个set方法
属性:
name:要赋值的属性的属性名
value:值
-->
<bean id="user2" class="com.bjsxt.pojo.User">
<property name="name" value="zhangsan"></property>
<property name="pwd" value="123456"></property>
</bean>
3.通过工厂方式
<!--通过工厂方式-->
<!--静态工厂:使用static来修饰方法-->
<bean id="user3" class="com.bjsxt.pojo.User" factory-method="aspectOf"></bean>
<!--动态工厂-->
<bean id="factory1" class="com.bjsxt.pojo.User"></bean><!--创建工厂对象-->
<bean id="user4" factory-bean="factory1" factory-method="hashCode"></bean>