close

Spring 基本概念

Spring框架的核心就是Spring容器,主要是透過容器建立、設定、管理直到銷毀物件。容器主要是利用dependency injection (DI)去管理組成應用程式的元件(物件),而這些元件(物件)則稱為所謂的Beans。

Spring提供了下列兩種不同的容器:

Spring BeanFactory Container

HelloWorld.java

package com.example ;

public class HelloWorld {
	private String message ;

	public void getMessage(){
	      System.out.println("Your Message : " + message);
	}
	public void setMessage(String message) {
		this.message = message;
	} 	
}

利用XmlBeanFactory() API建立factory bean,並且透過 ClassPathResource() API讀取bean的相關設定。

Main.java

package com.example ;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;


public class Main {

	public static void main(String[] args) {
		XmlBeanFactory factory = new XmlBeanFactory
                (new ClassPathResource("Beans.xml"));

	      HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");
	      
	      obj.getMessage();
	}
}
    


Beans.xml

	
   	
       
   	
	    

Application Context 是較進階的容器,他除了原先擁有BeanFactory容器的功能外,也包含處理property檔的文字和事件監聽的部分。

HelloWorld.java

package com.example ;

public class HelloWorld {
	private String message ;

	public void getMessage(){
	      System.out.println("Your Message : " + message);
	}
	public void setMessage(String message) {
		this.message = message;
	} 	
}

Main.java

package com.example ;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;


public class Main {

	public static void main(String[] args) {
		 ApplicationContext context = new FileSystemXmlApplicationContext("D:/Beans.xml");

	      HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
	      
	      obj.getMessage();
	}

}

Beans.xml

	
   	
       
   	
	    

ApplicationContext 最常實作的有下列三種:

FileSystemXmlApplicationContext:讀取設定檔時需要完整的路徑。

ClassPathXmlApplicationContext:讀取設定檔時不需要完整的路徑,但是需要設定CLASSPATH 。

WebXmlApplicationContext:web應用程式讀取設定檔。

arrow
arrow
    全站熱搜

    Codeless 發表在 痞客邦 留言(0) 人氣()