一、容器中注入对象的方式
Set注入方式
-
IoC容器对象注入的方式:set方式,constructor方式,autoaware自动注入
-
set方式:将对象注入到容器中,创建对象,对象属性的初始化需要setXxx方法(property:设置属性,和attribute不一样)
Teacher类 public class Teacher implements Serializable { private static final long serialVersionUID = 1L; private long id; private String name; private Student student; 构造器,get/set方法 } Student类 public class Student implements Serializable { private static final long serialVersionUID = 1L; private long id; private String name; private int age; private Array array; private List list; private Set set; private Map<Integer, String> map; private Properties prop; 构造器,get/set方法 } set.xml配置文件 bean:注入容器的对象标签 id:唯一标识一个IoC容器中的bean对象,不可重复,id会帮助我们检测对象的名字是否规范,name不会 name:类似于id,不可重复,但可以取别名(通过name="n1,n1"或者name="n1【空格】n2") class:要将哪个类对应的对象注入到容器中,全包名+类名 scope:prototype,采用非单例模式创建注入对象,每次获得对象都不一样 property:该类型对象对应属性 name:类中属性名 value:对象的属性初始化值,也可以利用value标签写在property标签文本域中 ref:同一个IoC容器中存在的自定类型的对象,建立以来关系,也可以利用<ref bean="stu"/>写在property标签文本域中 alias:容器中存在对象的别名 <!-- scope="prototype"让当前bean对象变为非单例,默认为单例 --> <bean name="stu" class="com.briup.bean.Student" scope="prototype"> <property name="id" value="1"></property> <property name="name" value="张三"></property> <property name="age" value="20"></property> </bean> <alias name="stu" alias="s1"/> <alias name="stu" alias="s2"/> <bean id="stu1 stu2" class="com.briup.bean.Student"> <property name="id" value="2"></property> <property name="name" value="李四"></property> <property name="age" value="30"></property> </bean> <bean id="teacher" class="com.briup.bean.Teacher"> <property name="id" value="10"></property> <property name="name" value="王老师"></property> <property name="student" ref="stu"></property> </bean> 测试类: ApplicationContext ac = new ClassPathXmlApplicationContext("set.xml");//相对于src文件夹路径 //获取容器的一个实例 HelloBean hb = (HelloBean) ac.getBean("helloBean"); System.out.println(hb.sayHello());
-
Spring容器怎么管理我们配置的对象:
- 默认情况下,Spring容器用单例模式管理这些对象
- 通过Spring容器中的对象id,多次取得同一个对象(单例模式)
- 通过配置,可以让容器用非单例模式管理对象,但是每次取得的对象都是不同的对象(对象地址空间不同,IoC容器也无法在管理非单例模式对象的销毁)
- 默认情况下,Spring容器用单例模式管理这些对象
-
bean标签通过id或者name属性进行标识,要保证标识唯一
-
对象集合的初始化:list集合,set集合,map集合,props配置文件
<!-- 给对象中注入集合 --> <bean id="stu" class="com.briup.bean.Student"> <property name="name" value="貟泽"/> <!-- 对象属性array集合 --> <property name="array"> <array> <value>1,2,3</value> </array> </property> 或者 <property name="array"> <value>1,2,3</value> </property>
-