美文网首页
学Spring的历程(2)——Bean的实例化

学Spring的历程(2)——Bean的实例化

作者: 飞鹩 | 来源:发表于2019-03-11 21:06 被阅读0次

    一、构造器实例化

    构造器实例化是指Spring容器通过Bean对应类中默认的无参构造方法来实例化Bean.

    通过一个简单的例子来训练。

    1.在搭建好的项目中的src下创建一个con.spring.constructor包。在包下创建一个类              Bean1:  

       public class Bean1 {  

       }

    2.在con.spring.constructor包下创建配置文件aplicationContext.xml.

    <?xml version="1.0" encoding="UTF-8"?>

    <beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:p="http://www.springframework.org/schema/p"

        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="bean1" class="alern.spring.constructor.Bean1"></bean>

    </beans>

    3.创建测试类Test01

    package alern.spring.constructor;

    import org.springframework.context.ApplicationContext;

    import org.springframework.context.support.ClassPathXmlApplicationContext;

    public class Test01 {

    public static void main(String [] args){

    String xmlPath = "alern/spring/constructor/aplicationContext.xml";

    ApplicationContext applicationContext =

    new ClassPathXmlApplicationContext(xmlPath);

    Bean1 bean1 = (Bean1) applicationContext.getBean("bean1");

    System.out.println(bean1);

    }

    }


    二、静态工厂方式实例化

    1. 在alern.spring.staticfactory包中创建类Bean2.类中没有方法

    2.在alern.spring.staticfactory包下创建类StaticFactory,并创建方法返回Bean2得的实例:

         public class StaticFactory {

          public static Bean2 createBean(){

          return new Bean2();

         }

         }

    3.在alern.spring.staticfactory包下创建Bean2.xml:

    <bean id="bean2" class="alern.spring.staticfactory.StaticFactory"

    factory-method="createBean"></bean>

    factory-method属性告诉容器是哪个工厂方法。

    4.创建测试类Test02:

    package alern.spring.staticfactory;

    import org.springframework.context.ApplicationContext;

    import org.springframework.context.support.ClassPathXmlApplicationContext;

    import alern.spring.constructor.Bean1;

    public class Test02 {

    public static void main(String [] args){

    String xmlPath = "alern/spring/staticfactory/bean2.xml";

    ApplicationContext applicationContext =

    new ClassPathXmlApplicationContext(xmlPath);

    Bean2 bean2 = (Bean2) applicationContext.getBean("bean2");

    System.out.println(bean2);

    }

    }


    三、使用实例工厂方式实例化

    此种方式的工厂类中,不在使用静态方法创建Bean实例,而是直接采用创建Bean实例的方式。同时在配置文件中,也不是由class直接指向实例化类,而是通过factory-bean指向配置的实例工厂,factory-method确定工厂使用的是哪个方法。

    1.在alern.spring.instancefactory包下创建类Bean3,也没有方法。

    2.在alern.spring.instancefactory包下创建类Bean3facotury:

    package alern.spring.instancefactory;

    public class Bean3facotury {

    public Bean3 myfactory(){

    return new Bean3();

    }

    }

    3.在alern.spring.instancefactory包下创建bean3,xml:

    <?xml version="1.0" encoding="UTF-8"?>

    <beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:p="http://www.springframework.org/schema/p"

        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="factory" class="alern.spring.instancefactory.Bean3facotury"></bean>

    <!-- 使用 factory-bean属性指向配置的实例工厂-->

    <!-- 使用factory-method属性来确定使用工厂的哪个方法 -->

    <bean id="bean3" factory-bean="factory" factory-method="myfactory"></bean>

    </beans>

    4.创建测试类Test3:

    package alern.spring.instancefactory;

    import org.springframework.context.ApplicationContext;

    import org.springframework.context.support.ClassPathXmlApplicationContext;

    public class Test03 {

    public static void main(String [] args){

    String xmlPath = "alern/spring/instancefactory/bean3.xml";

    ApplicationContext applicationContext =

    new ClassPathXmlApplicationContext(xmlPath);

    Bean3 bean3 = (Bean3) applicationContext.getBean("bean3");

    System.out.println(bean3);

    }

    }


                                                                                 学习书籍:《javaEE企业级开发教程》


    相关文章

      网友评论

          本文标题:学Spring的历程(2)——Bean的实例化

          本文链接:https://www.haomeiwen.com/subject/ntlipqtx.html