欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用BeanFactory實現(xiàn)創(chuàng)建對象

 更新時間:2018年08月26日 14:37:07   作者:魔靈兒  
這篇文章主要為大家詳細介紹了使用BeanFactory實現(xiàn)創(chuàng)建對象,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了BeanFactory實現(xiàn)創(chuàng)建對象的具體代碼,供大家參考,具體內容如下

說明:

 其作用是減少層與層之間的依賴。

實現(xiàn)步驟:

編寫2個類(Student,Teacher)再編寫beans.properties文件,接著編寫B(tài)eanFactory類,最后編寫測試類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() + "的一個對象。");
 }
}

運行結果如下:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Spring Boot 項目中使用Swagger2的示例

    Spring Boot 項目中使用Swagger2的示例

    本篇文章主要介紹了Spring Boot 項目中使用Swagger2的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Javaweb 500 服務器內部錯誤的解決

    Javaweb 500 服務器內部錯誤的解決

    這篇文章主要介紹了Javaweb 500 服務器內部錯誤的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java用split分割含一個或多個空格的字符串案例

    Java用split分割含一個或多個空格的字符串案例

    這篇文章主要介紹了Java用split分割含一個或多個空格的字符串案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來過來看看吧
    2020-09-09
  • Java String初始化String域例題解析

    Java String初始化String域例題解析

    這篇文章主要介紹了Java String初始化String域例題解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Springboot整合Flowable6.x導出bpmn20的步驟詳解

    Springboot整合Flowable6.x導出bpmn20的步驟詳解

    這篇文章主要介紹了Springboot整合Flowable6.x導出bpmn20,Flowable流程引擎可用于部署B(yǎng)PMN 2.0流程定義,可以十分靈活地加入你的應用/服務/構架,本文給出兩種從flowable導出流程定義bpmn20.xml的方式,需要的朋友可以參考下
    2023-04-04
  • hibernate多表操作實例代碼

    hibernate多表操作實例代碼

    這篇文章主要介紹了hibernate多表操作實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • MyBatis-Plus中提供的各種注解詳細說明

    MyBatis-Plus中提供的各種注解詳細說明

    這篇文章主要介紹了MyBatis-Plus中提供的各種注解詳細說明,下面對MyBatis-Plus提供的注解進行整理,本文提供了部分示例代碼以方便理解,需要的朋友可以參考下
    2023-11-11
  • javaDSL簡單實現(xiàn)示例分享

    javaDSL簡單實現(xiàn)示例分享

    DSL領域定義語言,用來描述特定領域的特定表達。比如畫圖從起點到終點;路由中的從A到B。這是關于畫圖的一個簡單實現(xiàn)
    2014-03-03
  • mybatis中查詢結果為空時不同返回類型對應返回值問題

    mybatis中查詢結果為空時不同返回類型對應返回值問題

    這篇文章主要介紹了mybatis中查詢結果為空時不同返回類型對應返回值問題,本文分幾種方法給大家介紹的非常詳細,需要的朋友可以參考下
    2019-10-10
  • 解決springboot中mongodb不啟動及Dao不能被掃描到的問題

    解決springboot中mongodb不啟動及Dao不能被掃描到的問題

    這篇文章主要介紹了解決springboot中mongodb不啟動及Dao不能被掃描到的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評論