Spring是Bean的管理容器,使得开发者摆脱了new对象,管理对象的麻烦

(觉得Spring也没方便多少),web应用里可以有多个Bean容器。
所以引用别人的类,只要在xml文件里写好bean就行了。
Spring在idea只要创建Spring项目就会自动下载好,很赞。

 bean的实例化有以下3种:
      静态工厂初始化(关于静态工厂在Spring的使用)
      首先是写好静态工厂
      package 创建工厂;
package 创建工厂;

/**
 * Created by Administrator on 2018/10/4.
 * 汽车类
 */
public class car {
    private String name;
    public car(String name){
        this.name=name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

package 创建工厂;

/**
 * Created by Administrator on 2018/10/4.
 */
public class carFactory {

    public static car getCar(String name){
        return new car(name);
    }

}

接下来是编写xml文件,这里命名为beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="aPerson" class="person">
        <property name="name" value="xiaoyue"/>
        <property name="age" value="25"/>
    </bean>
    <!--静态工厂方法创建Bean-->
    <bean id="aCar" class="创建工厂.carFactory" factory-method="getCar">
    <!-getCar里的参数在这里指定-->
        <constructor-arg value="宝马"/>
    </bean>

</beans>

测试类

package 创建工厂;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created by Administrator on 2018/10/4.
 */
public class test {
    public static void main(String[] args){
        ApplicationContext apc=new ClassPathXmlApplicationContext("beans.xml");
        car c= (car) apc.getBean("aCar");
        System.out.println(c.getName());
    }
}

运行结果
Bean实例化-LMLPHP
可以看到已经bean创建了car对象

接下来是实例化工厂方法,下面是xml配置
<!--实例化工厂创建Bean-->
    <!--首先,创建实例工厂对象-->
    <bean id="instanceFactory" class="创建工厂.instanceFactory"></bean>
    <!--然后就可以使用instanceFactory创建car对象-->
    <bean id="instanceCar" factory-bean="instanceFactory" factory-method="getCar">
        <constructor-arg value="奔驰"/>
    </bean>

测试一下

//实例化工厂
        car c=(car)apc.getBean("instanceCar");
        System.out.println(c.getName());

结果如下

Bean实例化-LMLPHP
可以看到正确运行

当然正常的类也可以通过在xml中配置,这里就不多说了,最上面代码有

10-04 11:47