怎么样生成bean对象java_使用BeanFactory实现创建对象
本文实例为大家分享了BeanFactory实现创建对象的具体代码,供大家参考,具体内容如下
说明:
其作用是减少层与层之间的依赖。
实现步骤:
编写2个类(Student,Teacher)再编写beans.properties文件,接着编写BeanFactory类,最后编写测试类BeanTest。
参考代码如下:
/**
*beans.properties文件的内容(位于与src平级的config资源包下)
*/
Student=com.xxx.generic.demo.Student
Teacher=com.xxx.generic.demo.Teacher
/**
*BeanFactory类的参考代码
*/
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class BeanFactory {
private BeanFactory() {
}
private static Map beans = new HashMap<>();
static {
InputStream is = BeanFactory.class.getClassLoader().getResourceAsStream("beans.properties");
Properties prop = new Properties();
try {
prop.load(is);
Enumeration keys = (Enumeration) prop.propertyNames();
while (keys.hasMoreElements()) {
String key = keys.nextElement();
String value = prop.getProperty(key);
beans.put(key, value);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public static T getBean(Class clazz) {
T t = null;
String className = clazz.getSimpleName();
Set keys = beans.keySet();
for (String key : keys) {
if (key.equals(className)) {
String value = beans.get(key);
try {
t = (T) Class.forName(value).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
return t;
}
}
/**
*BeanTest类参考代码
*/
public class BeanTest {
public static void main(String[] args) {
Student s = BeanFactory.getBean(Student.class);
System.out.println(s + ":我是" + s.getClass().getSimpleName() + "的一个对象。");
Teacher t = BeanFactory.getBean(Teacher.class);
System.out.println(t + ":我是" + t.getClass().getSimpleName() + "的一个对象。");
}
}
运行结果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
怎么样生成bean对象java_使用BeanFactory实现创建对象相关推荐
- Spring源码分析-如何获取Bean对象
导语 在上篇博客中 介绍了关于BeanFactory和FactoryBean相关的操作,并且查看了在两个操作中他们具体的代码有那些,这篇博客主要就是顺着上篇博客思路继续来分析Bean对象的获取.下 ...
- 【spring源码】基于factoryMethod创建bean对象
案例: 1.定义Student类: @Data public class Student {private String name;private Integer age;public Student ...
- Spring学习笔记(一):bean对象的配置Ioc
文章目录 把对象创建交给spring管理 一.创建bean的三种方式 二.bean对象的作用范围 三.bean对象的生命周期 spring中的依赖注入 一.构造函数注入(除非必须,一般不用) 二.se ...
- spring bean对象的生成及数据注入的时机 -》getBean
大家都知道在spring中bean对象的生成分两类一类是预加载,也就是说在容器初始化的时候把bean注入生成的事情一起干了.另一类是需要开发者主动调用getBean来获取bean对象. 1.预加载函数 ...
- 四:BeanFactory来获取bean对象
通过BeanFactory来获取bean对象,bean的生命周期是否和Applicationcontext 是一样吗? 不是一样的,bean是工厂中创建的生命周期会简单一些: 转载于:https:// ...
- IoC-spring 的灵魂(带你轻松理解IOC思想及bean对象的生成过程)
在理解任何技术之前,我都会问自己一个问题:它的产生是为了解决什么样的问题,以及如何解决这些问题?希望你能在本篇文章中找到答案-- (由于大家对Ioc应该是经常使用了,所以这里不会告诉你应该怎么样使用, ...
- Spring里的容器和Bean对象
"控制反转"是指new实例工作不由程序员来做而是交给Spring容器来做.在Spring中BeanFactory是IOC容器的实际代表者. Spring 容器是 Spring 框架 ...
- 奇怪的问题,再次启动jar包会导致bean对象失效?Unknown redis exception Cannot connect, Event executor group is terminated
大家好,我是烤鸭: 踩坑实录.一个某次上线导致的问题,并没有改过什么代码,只是重新上了一次包,没上之前从来没出过这个问题.最开始日志的报错信息一直是 NoClassDefFoundError coul ...
- Bean、BeanDefinition、BeanFactory、FactoryBean
Bean 1.bean的定义格式: <bean id="" class=""></bean> 2.Bean对象在Spring实现中是以B ...
最新文章
- R语言创建频数表和列联表
- spring boot 缓存_Spring Boot 集成 Redis 实现数据缓存
- android平板 useragent,移动端适配 user-Agent
- 补习系列(18)-springboot H2 迷你数据库
- 无法定位程序输入点adddlldirectory 于动态_小程序能力只能“单身”?“乐高”组合玩法了解一下...
- CTF-bugku-crypto-[简单加密]-凯撒密码的base64形式
- 零和博弈 (社会学概念)
- 微软手环2服务器,微软手环2评测 数据狂的最爱
- oracle系统优化
- python beautifulsoup库下载_python之Beautiful Soup库
- 手机使用电脑自带功能进行投屏
- 365 水壶问题(递归、数学-裴蜀定理)
- 组播IGMP-原理介绍+报文分析+配置示例
- Towards 3D Human Pose Estimation in the Wild: a Weakly-supervised Approach论文翻译
- 文件夹拷贝,判断,生成当前用户权限的文件夹
- python中出现[Errno 2] No such file or directory解决方法之一
- Photoshop色彩模式完全手册
- python3 requests+bs4爬取某网页MM图片
- 从今天起做一个全新的自己
- AWS-SS配置过程
热门文章
- c++ 合并2个txt_多个表达矩阵文件合并
- 西门子rwd60参数设置调试手册_RWD60 RWD68 RWD62控制器调试指导说明
- hnu暑期实训之487-3279 字符串处理
- 【机器学习-西瓜书】七、贝叶斯分类器
- 【caffe-windows】 caffe-master 之 卷积核可视化(利用matlab)
- Python生成requirements.txt方法
- 【论文笔记】Factorizable Graph Convolutional Networks
- 机器学习从入门到进阶✅
- python matplotlib 给图任意加标注
- [转]三阶魔方神程序