java之spring之对象的创建
2024-10-21 02:59:56
首先提供目录结构如下:
下面提供各文件代码,以供参考:
UserDynamicFactory.java
package cn.sxt.factory; import cn.sxt.vo.User; /**
* ��̬��������������
*
*/
public class UserDynamicFactory {
public User createUser(String name,int age){
return new User(name,age);
}
}
UserFactory.java
package cn.sxt.factory; import cn.sxt.vo.User;
/**
*
*/
public class UserFactory {
public static User createUser(String name,int age){
return new User(name,age);
}
}
User.java
package cn.sxt.vo; public class User {
private String name;
private int age;
public User() {
}
public User(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
}
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 通过有参构造方法创建对象 -->
<bean id="u1" class="cn.sxt.vo.User">
<!-- 通过参数的下标来设置参数 下标从0开始 -->
<constructor-arg index="0" value="张三疯"/>
<constructor-arg index="1" value="33"/>
</bean>
<bean id="u2" class="cn.sxt.vo.User">
<!-- 通过参数的名称来设置参数 name表示参数名称 -->
<constructor-arg name="name" value="张三疯"/>
<constructor-arg name="age" value="33"/>
</bean>
<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>
<!-- 通过静态工厂创建对象 -->
<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>
<!-- 通过动态工厂来创建对象 -->
<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>
</beans>
SpringTest.java
package cn.sxt.spring; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.sxt.vo.User; public class SpringTest {
@Test
public void testHello(){
//��������
ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
User u=(User)ac.getBean("u6");
System.out.println(u);
}
}
一.通过构造方法来创建对象
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>
最新文章
- 9.SpringMVC和json结合传递数据 &;&; 10.SpringMVC获取controller中json的数据
- 自定义input[type=";file";]的样式
- JavaWeb实现文件上传下载功能实例解析
- myeclipse9 struts2配置
- SQLite的简单应用
- 【转】PHP网站常见安全漏洞,及相应防范措施总结
- sql server 修改字段大小
- Ninject的项目情况
- smarty实例登陆、显示、分页
- H5 Bgsound
- dispatch_sync和dispatch_async的区别
- Mysql安装与主从配置
- 手把手教你如何安装Pycharm——靠谱的Pycharm安装详细教程
- ---- 关于Android蓝牙搜索到设备的图标显示和设备过滤
- 第三十三篇-TabLayout的使用
- QT 12 QTimage转换Mat
- jquery使用FormData提交数据
- oracle数据库迁移相关
- (面试)写出下面switch语句的输出结果
- Django基础教程
热门文章
- R包 survival 生存分析
- Tensorflow 损失函数(loss function)及自定义损失函数(三)
- git推送本地分支到远程仓库并在远程仓库创建新分支
- TF 保存模型为 .pb格式
- win10系统优化方法及chkdsk工具使用
- easyui datagrid的editor编辑器如何为validatebox控件添加改变事件
- Python + Selenium 自动发布文章(一):开源中国
- MQTT研究之EMQ:【EMQX使用中的一些问题记录(1)】
- python 一般处理
- Failed to open .vcf.gz: could not load index