本文实例为大家分享了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<String, String> beans = new HashMap<>(); static { InputStream is = BeanFactory.class.getClassLoader().getResourceAsStream("beans.properties"); Properties prop = new Properties(); try { prop.load(is); Enumeration<String> keys = (Enumeration<String>) 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> T getBean(Class<T> clazz) { T t = null; String className = clazz.getSimpleName(); Set<String> 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() + "的一个对象。"); } }
运行结果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
主要内容:1.BeanFactory 的实现,2.ApplicationContext 的实现,3.BeanFactory 和 ApplicationContext的总结1.BeanFactory 的实现 1.1 DefaultListableBeanFactory 实现类 无解析@Bean. @Configuration 的功能 下面代码解析: 先是通过一个工具类得到BeanDefinition, 然后beanFactory 注册BeanDefinition 打印出工厂种的Bean 下面代码通
问题内容: 如何使用PHP实现或创建这种JSON对象? 经过几次尝试,我没有找到解决方案。例如,我尝试了这个: 问题答案:
问题内容: 我需要使用NDK以及JNI将一些功能实现到Android应用程序中。 这是我所写的C代码: 我的问题或多或少在代码内得到了解释。也许还可以:函数(jobject)的返回类型可以吗? 现在,NDKTest.java: 当我尝试运行代码时,它不起作用。 问题答案: 既然是内部类,那么获得它的方法就是 内部类的约定在权威规范中并未真正明确记录,但是根深蒂固地存在于如此多的工作代码中,因此不太
问题内容: 给定班级价值: 我正在尝试使用创建该类的新实例: 从主要: 这不起作用,Eclipse的输出: 如果是这样,怎么可以用我创建了一个新的价值目标,在那里我调用的? 谢谢 问题答案: 您需要为此找到确切的构造函数。只能用于调用null构造函数。所以写
我使用RxJava(聚合服务)编写了一个Spring Boot微服务来实现以下简化用例。大局是当讲师上传课程内容文档时,应该生成并保存一组问题。 用户将文档上载到系统 当用户上载文档时,会从中创建许多问题(可能有数百个左右)。这里的问题是,我正在按顺序发布一个问题,以便CRUD服务保存它们。由于IO密集型网络调用,这会大大降低操作速度,因此完成整个过程大约需要20秒。以下是当前代码,假设所有问题都
我正在尝试学习在Quarkus框架上使用ReactiveMongoClient。 我以大学的身份发送回复部分成功 但是,当我尝试获取其他类的对象(StaffResponse)以包含用于分页的链接对象时,我没有得到任何Staff记录。(目前,我有用于分页的硬编码链接) 响应中的“staff”为空。 MongoClient正在返回人员列表ok,看起来响应对象没有获取该列表。试图阅读SmallRye的叛