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"?> 23 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 1210 11 class="cn.sxt.vo.User"> 13 14 1715 16 class="cn.sxt.vo.User"> 18 19 2220 21 class="cn.sxt.vo.User"> 23 26 2724 25 class="cn.sxt.factory.UserFactory" factory-method="createUser"> 28 31 3229 30 class="cn.sxt.factory.UserDynamicFactory"/> 33 34 3735 36
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">