標籤:
一、目標:讀取properties檔案,獲得類名來產生對象
二、類
1.Movable.java
public interface Movable {void run();}
2.Car.java
public class Car implements Movable {public void run() {System.out.println("Car running...............");}}
3.spring.properties
PS:"="兩邊不能有空格
vechileType=com.tong.spring.factory.Car
4.Test.java
public class Test {@org.junit.Testpublic void test() {//讀取properties檔案,獲得類名來產生對象Properties pros = new Properties();try {//1.讀取要執行個體化的類名pros.load(Test.class.getClassLoader().getResourceAsStream("com/tong/spring/factory/spring.properties"));String vechileType = pros.getProperty("vechileType");//2.利用反射裝載類及用newInstance()執行個體化類Object o = Class.forName(vechileType).newInstance();Movable m = (Movable)o;m.run();} catch (Exception e) {e.printStackTrace();}}}
5.運行結果:
6.若改成spring讀取xml檔案,則spring配置好後,增加applicationContext.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-3.0.xsd"> <bean id="vehicle" class="com.tong.spring.factory.Car"> </bean> <!-- more bean definitions go here --></beans>
7.Test.java改為如下
public class Test {@org.junit.Testpublic void test() {BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");Object o = factory.getBean("vehicle");Movable m = (Movable)o;m.run();}}
Java 讀取Properties檔案