java之spring之对象的创建
Posted vincent-yuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 <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 <!-- 通过有参构造方法创建对象 --> 7 <bean id="u1" class="cn.sxt.vo.User"> 8 <!-- 通过参数的下标来设置参数 下标从0开始 --> 9 <constructor-arg index="0" value="张三疯"/> 10 <constructor-arg index="1" value="33"/> 11 </bean> 12 <bean id="u2" class="cn.sxt.vo.User"> 13 <!-- 通过参数的名称来设置参数 name表示参数名称 --> 14 <constructor-arg name="name" value="张三疯"/> 15 <constructor-arg name="age" value="33"/> 16 </bean> 17 <bean id="u3" class="cn.sxt.vo.User"> 18 <!-- 通过参数的类型来设置参数 type表示参数类型 --> 19 <constructor-arg type="java.lang.String" value="张三疯"/> 20 <constructor-arg type="int" value="33"/> 21 </bean> 22 <bean id="u4" class="cn.sxt.vo.User"> 23 <property name="name" value="张无忌"/> 24 <property name="age" value="23"/> 25 </bean> 26 <!-- 通过静态工厂创建对象 --> 27 <bean id="u5" class="cn.sxt.factory.UserFactory" factory-method="createUser"> 28 <constructor-arg type="java.lang.String" value="张三疯"/> 29 <constructor-arg type="int" value="33"/> 30 </bean> 31 <!-- 通过动态工厂来创建对象 --> 32 <bean id="factory" class="cn.sxt.factory.UserDynamicFactory"/> 33 <bean id="u6" factory-bean="factory" factory-method="createUser"> 34 <constructor-arg type="java.lang.String" value="张三疯"/> 35 <constructor-arg type="int" value="33"/> 36 </bean> 37 </beans>
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. 通过参数下标来设置参数的值
<!-- 通过有参构造方法创建对象 -->
<bean id="u1" class="cn.sxt.vo.User">
<!-- 通过参数的下标来设置参数 下标从0开始 -->
<constructor-arg index="0" value="张三疯"/>
<constructor-arg index="1" value="33"/>
</bean>
2.通过参数名称来设置
<bean id="u2" class="cn.sxt.vo.User">
<!-- 通过参数的名称来设置参数 name表示参数名称 -->
<constructor-arg name="name" value="张三疯"/>
<constructor-arg name="age" value="33"/>
</bean>
3.通过参数类型来设置
<bean id="u3" class="cn.sxt.vo.User">
<!-- 通过参数的类型来设置参数 type表示参数类型 -->
<constructor-arg type="java.lang.String" value="张三疯"/>
<constructor-arg type="int" value="33"/>
</bean>
二. 通过无参构造方法来创建对象
<bean id="u4" class="cn.sxt.vo.User">
<property name="name" value="张无忌"/>
<property name="age" value="23"/>
</bean>
注意:需要提供无参构造器,并且属性要有对应的set方法
三. 通过静态工厂来创建对象
静态工厂类:
/** * 静态工厂方法 * 通过静态工厂来创建对象 */ public class UserFactory public static User createUser(String name,int age) return new User(name,age);
配置文件
<!-- 通过静态工厂创建对象 -->
<bean id="u5" class="cn.sxt.factory.UserFactory" factory-method="createUser">
<constructor-arg type="java.lang.String" value="张三疯"/>
<constructor-arg type="int" value="33"/>
</bean>
四.通过动态工厂来创建对象
动态工厂类
/** * 动态工厂来创建对象 * */ public class UserDynamicFactory public User createUser(String name,int age) return new User(name,age);
配置文件
<!-- 通过动态工厂来创建对象 --> <bean id="factory" class="cn.sxt.factory.UserDynamicFactory"/> <bean id="u6" factory-bean="factory" factory-method="createUser"> <constructor-arg type="java.lang.String" value="张三疯"/> <constructor-arg type="int" value="33"/> </bean>
以上是关于java之spring之对象的创建的主要内容,如果未能解决你的问题,请参考以下文章