SpringIoC入门 工厂创建对象 单例和多例

    科技2026-03-04  8

    Spring的IOC入门

    方法区别 context.getBean("id值", 类型.class);//无需转型 context.getBean("id值");//需转型 bean标签的属性 id:bean标签的识别ID,理论上可以随便写 class:你要上Spring给你创建那个类的对象,需要协商该类的全部路径名赋值的方式有两个 Person person1 = new Person(); //设置方法 person1.setId(1); System.out.println(person1); //构造方法赋值 Person person2 = new Person(1,"jack",20,new Date()); System.out.println(person2);

    name :成员变量的名字 value :成员变量的值 一个property标签最后会调一个对应的set方法

    <bean id="person2" class="com.wzx.domain.Person" > <property name="id" value="10"/> <property name="name" value="rose"/> <property name="age" value="20"/> </bean>

    通过构造方法创建对象

    </bean> <bean id="date1" class="java.util.Date"/> <bean id="person3" class="com.wxx.domain.Person"> <constructor-arg name="id" value="10"/> <constructor-arg name="name" value="hello"/> <constructor-arg name="age" value="20"/> <constructor-arg name="birthday" ref="date1"/> </bean> 配置构造方法的参数的constructor-arg如果有四个,就表示调用的是一个含有四个参数的构造方法。value可以赋上基本类型数据与String,但是其他对象,需要使用ref表示在当前容器中查找一个已存在的对象

    静态工厂创建对象

    什么是静态工厂 XxxFactory.get();通过调用静态方法获取bean对象 public class PersonFactory{ public static Person getBean(){ return new Person();//静态方法返回创建的对象 } } factory-method 指定获取对象的静态工厂的方法 <bean class="com.wzx.demo02.PersonFactory" factory-method="getBean" id="person4"/> //静态工厂造对象 @Test public void test03(){ Person person1 = (Person)context.getBean("person4"); log.debug(person1.toString()); }

    实例工厂创建对象

    什么是实例工厂 xxxFactory通过工厂对象调用成员方法获得bean对象 XxxFactory factory = new XxxFactory(); //实例化工厂对象 factory .yyy() //获得对象factory-bean创建工厂对象factory-method调用方法获得bean对象 public class PersonFactory2 { //没有静态方法,所以必须先要new PersonFactory2()才能调用 public Person getBean(){ return new Person(); } } <bean class="com.wxx.demo03.PersonFactory2" id="factory2"/> <bean factory-bean="factory2" factory-method="getBean" id="person5"/> @Test public void test04(){ Person person1 = (Person)context.getBean("person5"); log.debug(person1.toString()); }

    单例和多例

    单例是什么? 内存中只有一个对象,每次获取到的该对象的地址值是相同的多实例是什么? 内存中的每次创建的对象都是一个新的对象,他们的地址值都是不同的问题1.每次获取对象的时候,spring是新创建一个对象还是始终给我们返回的是同一个对象答:spring默认的情况下创建的对象都是单例的,(每次返回的对象都是同一个) scope="singleton" 单例(默认值) scope="prototype" 多例 scope="request" 创建的对象放到request域中 scope="session" 创建对象放到session对象 多实例 <bean id="person" class="com.wzx.domain.Person" scope="prototype"/> 单实例 <bean id="person" class="com.wzx.domain.Person" scope="singleton"/>
    Processed: 0.015, SQL: 9