怎么样生成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 ...
最新文章
- google浏览器插件安装时出错,Package is invalid: CRX HEADER INVALID
- 直播协议的选择:RTMP vs. HLS
- 5.7 matlab数据插值与曲线拟合的比较
- Win7系统下装Linux操作系统详细流程(图文)
- 关于字符串指针不可修改的问题
- Golang之new和make
- PHP调用外部服务获取IP地域信息实现信息的地域性关联
- SpringMVC Spring Mybatis Druid SpringSession集成例子
- the pdf expert for android v2.6.0,PDF Expert
- htaccess 伪静态的规则
- Dennis Ritchie, father of Unix and C, dies
- ctr预估之特征工程
- 【Hoxton.SR1版本】Spring Cloud Ribbon负载均衡服务调用
- STM32F103实现LED呼吸灯程序
- Eclipse 的中文简体版安装教程
- 木讷的程序员需要知道的事情 (三)
- Tableau 网站流量分析案例汇总
- Java相互关注_java --关注/取消关注
- PWM的基本原理及其应用实例
- Excel:IF条件类函数