目录
1.1Bean标签基本配置
用于配置对象交由Spring来创建。
默认情况下它调用的类是无参构造函数。
基本属性:
id:Bean实例在Spring容器中的唯一标识
class:Bean的全限定名称
1.2Bean标签的范围配置
scope:指对象的作用范围,取值如下:
默认是singleton;
1.2.1singleton创建的对象是同一对象,当应用加载,创建容器时,对象被创建。
实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例
对象销毁:当应用卸载。销毁容器时,对象就被销毁。
1.2.2proptpye创建的对象不是同一对象,当使用对象时,创建新的对象实列。
实例化时机:当调用getBean()方法时实例化Bean。
对象销毁:对象长时间不用时,被java的垃圾回收器会收了。
1.3Bean生命周期配置
liit-method:指类中的初始化方法名称
destrory-method:指类中销毁方法名称
//创建对象的方法
//配置生命周期配置
//测试成功
1.4Bean实例化三种方式
无参构造方法实例化
工厂静态方法实列化
工厂实例方法实例化
1.4.1 前面都是无参构造
1.4.2工厂静态方法实列化
首先实现创建静态工厂
其次在配置文件中 ,说明对应的静态工厂包位置,以及对应静态工厂方法
因为是静态,无需创建StaticFatory就可以获取工厂方法
测试运行,与之前一样,创建成功
1.4.2工厂实列方法实列化
首先创建实例工厂
配置 要创建工厂,才能获取实例方法,所以要声明工厂bean
运行测试,创建成功
1.5依赖注入的两种方式
1.5.1依赖注入的概念
怎么办把dao层的UserDao注入到service层里的UserService呢
setter方法
构造方法
1.5.2setter方法
前置准备:
1.创建service层,创建UserService接口,以及它的实现类
2.配置UserService bean 以及UserDao bean ,声明UserService里面的setUserDao,以及它的引用UserDao 使用ref
注意 这里的 ref="userDao" 是引用容器生成的userDao bean
这里的property name="userDao" 是setUserDao属性名,set后面的UserDao,首字母小写
3.测试,UserService调用UserDao里面的save方法成功;
setter简洁注入方式 p命名空间
1.5.3构造方法注入
1.构造器注入UserDao
2. 配置UserService bean 以及UserDao bean ,声明UserService里面的构造器,以及它的引用UserDao 使用ref
注意这里的constructor-arg name="userDao"是构造器里面的参数
1.6 Bean的依赖注入的数据类型
普通数据类型
引用数据类型
集合数据类型
1.6.1引用数据类型注入
因为前面的案例都是 ref 引用数据类型注入,下面就不演示了
1.6.1普通数据类型注入
1.添加name、age属性,这里我使用了setter注入,构造器方式也可以
2.配置,因为是普通数据类型,所以我们不需要用到ref引用,只有value对对应的属性赋值
3.测试,成功输出name和age
1.6.2集合注入
这里演示的是list map property集合注入
1.创建list 、map、properties,设置set方法
2.配置 对各个集合赋值,注意User 引用类型需要单独创建Bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--集合注入-->
<bean id="userDao" class="com.hzw.dao.impl.UserDaoImpl" >
<property name="strlist">
<list>
<value>233</value>
<value>222</value>
<value>293</value>
</list>
</property>
<property name="userMap">
<map>
<entry key="user01" value-ref="user1"></entry>
<entry key="user02" value-ref="user2"></entry>
</map>
</property>
<property name="properties">
<props >
<prop key="p1">111</prop>
<prop key="p2">222</prop>
</props>
</property>
</bean>
<!--对应的引用User bean-->
<bean id="user1" class="com.hzw.domin.User">
<property name="username" value="狗子1"></property>
<property name="addr" value="广州"></property>
</bean>
<bean id="user2" class="com.hzw.domin.User">
<property name="username" value="狗子2"></property>
<property name="addr" value="武汉"></property>
</bean>
</beans>
3.测试,各个集合添加数据成功