实例工厂方式实例化Bean

红太狼 2023-06-07 05:52 82阅读 0赞

Bean3:实体类

  1. package com.student.instance.constructor;
  2. public class Bean3 {
  3. }

bean3 配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <!-- services -->
  7. <bean id="myBean3Factory" class="com.student.instance.constructor.MyBean3Factory"></bean>
  8. <bean id="bean3" factory-bean="myBean3Factory" factory-method="createBean">
  9. </bean>
  10. </beans>

Bean3Factory :工厂类

  1. package com.student.instance.constructor;
  2. public class MyBean3Factory {
  3. public MyBean3Factory() {
  4. System.out.println("哈哈,我的Bean3正在实例化!!");
  5. }
  6. public Bean3 createBean() {
  7. return new Bean3();
  8. }
  9. }

InstanceTest3 :测试类

  1. package com.student.instance.constructor;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. public class InstanceTest3 {
  5. public static void main(String[] args) {
  6. String xmlPath = "com/student/instance/constructor/bean3.xml";
  7. ApplicationContext applicationContext =new ClassPathXmlApplicationContext(xmlPath);
  8. Bean3 bean =(Bean3)applicationContext.getBean("bean3");
  9. System.out.println(bean);
  10. }
  11. }

输出结果:

  1. 十月 13, 2019 2:56:31 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
  2. 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@46f7f36a: startup date [Sun Oct 13 14:56:31 CST 2019]; root of context hierarchy
  3. 十月 13, 2019 2:56:31 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
  4. 信息: Loading XML bean definitions from class path resource [com/student/instance/constructor/bean3.xml]
  5. 哈哈,我的Bean3正在实例化!!
  6. com.student.instance.constructor.Bean3@51efea79

解释:

  1. 因为静态方法,外部可以直接通过对象名.方法名的方式进行调用,所以配置的时候只需要一个<bean> ;代码如下:
  2. <bean id="bean2" class="com.student.instance.constructor.MyBean2Factory" factory-method="createBean"></bean>
  3. 这里只需要指明类地址和方法名就能进行调用,但是实例工厂不能直接通过这个方式调用,需要先用一个<Bean>将实例工厂加载到配置文件,然后再通过另一个<bean>指明实例工厂的哪种方法。
  4. 代码如下:
  5. <bean id="myBean3Factory" class="com.student.instance.constructor.MyBean3Factory"></bean>
  6. <bean id="bean3" factory-bean="myBean3Factory" factory-method="createBean">
  7. </bean>

发表评论

表情:
评论列表 (有 0 条评论,82人围观)

还没有评论,来说两句吧...

相关阅读