zoukankan      html  css  js  c++  java
  • 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, 输出结果

     

  • 相关阅读:
    ABOUT JAD 反编译工具
    Linux下/proc目录简介(文章来源于http://blog.csdn.net/zdwzzu2006/article/details/7747977)
    用Axis2实现Web Service(简单的axis实现)
    初探STRUTS
    JAVA 导出Excel2003格式文件实现代码
    JAVA Httpclient3.x与Httpclient4.x代码对比(post方法)
    MyEclipse使用心得(快捷方式)
    Iptables详解(文章来源于http://blog.chinaunix.net/uid-22780578-id-3346350.html)
    C函数篇(Timer函数)
    C函数篇(wait函数)
  • 原文地址:https://www.cnblogs.com/excellencesy/p/9104834.html
Copyright © 2011-2022 走看看