美文网首页
学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