• bean实例化--工厂方法


    1,编写bean

     1 package com.songyan.demo1;
     2 
     3 /**
     4  * 要创建的对象类
     5  * @author sy
     6  *
     7  */
     8 public class User {
     9 private String name;
    10 private int age ;
    11 public String getName() {
    12     return name;
    13 }
    14 public void setName(String name) {
    15     this.name = name;
    16 }
    17 public int getAge() {
    18     return age;
    19 }
    20 public void setAge(int age) {
    21     this.age = age;
    22 }
    23 
    24 }

     

    2,编写工厂

     1 package com.songyan.factory;
     2 
     3 import com.songyan.demo1.User;
     4 
     5 /**
     6  * @author sy
     7  * 工厂类
     8  */
     9 public class Factory {
    10 
    11     /**
    12      * 非静态方法创建对象
    13      * @return
    14      */
    15     public User create()
    16     {
    17         return new User();
    18     }
    19 }

     

    3, 编写xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
     3     
     4     <!--通过构造函数创建对象  -->
     5     <!-- <bean id="userid" class="com.songyan.demo1.User"></bean> -->
     6     
     7     <!--通过静态工厂创建对象  -->
     8     <!--通过 com.songyan.staticfactory.UserFactory类中的createUser方法创建名为user2的对象 -->
     9     <!-- <bean name="user2" class="com.songyan.staticfactory.UserFactory" factory-method="createUser"></bean> -->
    10     
    11     <bean name="factory" class="com.songyan.factory.Factory"></bean>
    12     <bean name="user3" class="com.songyan.demo1.User" factory-bean="factory" factory-method="create"></bean>
    13 </beans>

     这里在配置的时候需要配置两个对象,factory和bean

    因为创建对象的方法是非静态的,所以必须创建一个factory的对象才可以调用创建对象的方法

    4, 测试类

    1 @Test
    2     public void test()
    3     {
    4         ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");    
    5         User user3=(User)applicationContext.getBean("user3");
    6     System.out.println(user3);
    7     }

     容器通过user3这个username/userid找到Bean对象,通过这个bean对象里面配置的factorybean,和factorymethod找到factorybean,根据factorybean中定义的class创建工厂对象,再根据userbean中配置的factorymethod调用factory的create方法创建一个User对象。

    5, 输出结果

     

  • 相关阅读:
    再看机器学习
    普通MLP处理图像时遇到了什么样的问题,才导致后续各种模型的出现
    图像分类算法为什么有那么多?
    算法的时间复杂度到底怎么算?
    [Python]7种基础排序算法-Python实现
    [Python3]星号*的打开方式
    [Pyspark]RDD常用方法总结
    [Python3]为什么map比for循环快
    Sass简介
    最全的DOM事件笔记
  • 原文地址:https://www.cnblogs.com/excellencesy/p/9104834.html
Copyright © 2020-2023  润新知