java之spring之对象的创建


首先提供目录结构如下:

下面提供各文件代码,以供参考:

UserDynamicFactory.java

 1 package cn.sxt.factory;
 2 
 3 import cn.sxt.vo.User;
 4 
 5 /**
 6  *     ?????????????????
 7  *
 8  */
 9 public class UserDynamicFactory {
10     public User createUser(String name,int age){
11         return new User(name,age);
12     }
13 }

UserFactory.java

 1 package cn.sxt.factory;
 2 
 3 import cn.sxt.vo.User;
 4 /**
 5  * 
 6  */
 7 public class UserFactory {
 8     public static User createUser(String name,int age){
 9         return new User(name,age);
10     }
11 }

User.java

 1 package cn.sxt.vo;
 2 
 3 
 4 public class User {
 5     private String name;
 6     private int age;
 7     public User() {
 8     }
 9     public User(String name, int age) {
10         super();
11         this.name = name;
12         this.age = age;
13     }
14     public String getName() {
15         return name;
16     }
17     public void setName(String name) {
18         this.name = name;
19     }
20     public int getAge() {
21         return age;
22     }
23     public void setAge(int age) {
24         this.age = age;
25     }
26     @Override
27     public String toString() {
28         return "User [name=" + name + ", age=" + age + "]";
29     }
30 }

beans.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2  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     
 7     class="cn.sxt.vo.User">
 8         
 9         
10         
11     
12     class="cn.sxt.vo.User">
13         
14         
15         
16     
17     class="cn.sxt.vo.User">
18         
19         
20         
21     
22     class="cn.sxt.vo.User">
23         
24         
25     
26     
27     class="cn.sxt.factory.UserFactory" factory-method="createUser">
28         
29         
30     
31     
32     class="cn.sxt.factory.UserDynamicFactory"/>
33     
34         
35         
36     
37 

SpringTest.java

 1 package cn.sxt.spring;
 2 
 3 import org.junit.Test;
 4 import org.springframework.context.ApplicationContext;
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6 
 7 import cn.sxt.vo.User;
 8 
 9 public class SpringTest {
10     @Test
11     public void testHello(){
12         //????????
13         ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
14         User u=(User)ac.getBean("u6");
15         System.out.println(u);
16     }
17 }

一.通过构造方法来创建对象

1. 通过参数下标来设置参数的值


    class="cn.sxt.vo.User">
        
        
        
    

2.通过参数名称来设置

class="cn.sxt.vo.User">
        
        
        
    

 3.通过参数类型来设置

class="cn.sxt.vo.User">
        
        
        
    

二. 通过无参构造方法来创建对象

class="cn.sxt.vo.User">
        
        
    

注意:需要提供无参构造器,并且属性要有对应的set方法

三. 通过静态工厂来创建对象

静态工厂类:

/**
 * 静态工厂方法 
 *     通过静态工厂来创建对象
 */
public class UserFactory {
    public static User createUser(String name,int age){
        return new User(name,age);
    }
}

配置文件


    class="cn.sxt.factory.UserFactory" factory-method="createUser">
        
        
    

四.通过动态工厂来创建对象

动态工厂类

/**
 *     动态工厂来创建对象
 *
 */
public class UserDynamicFactory {
    public User createUser(String name,int age){
        return new User(name,age);
    }
}

配置文件


    id="factory" class="cn.sxt.factory.UserDynamicFactory"/>
    factory-bean="factory" factory-method="createUser">
        
        
    

相关