close
Bean的scope包含:singleton(default)、prototype、request、session、global-session
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.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
obj.setMessage("hello world");
obj.getMessage();
HelloWorld obj1 = (HelloWorld) context.getBean("helloWorld");
obj1.getMessage();
}
}
Beans.xml
結果顯示如下:
Your Message : hello world Your Message : hello world
scope改為prototype 結果顯示如下:
Your Message : hello world Your Message : null (類似於request的概念,重新獲取一個新的Bean物件後則reset掉)
Bean的life cycle
初始化可實作介面InitializingBean中的afterPropertiesSet()
public class ExampleBean implements InitializingBean {
public void afterPropertiesSet() {
// do some initialization work
}
}
同理亦可實作介面DisposableBean中的destroy()
public class ExampleBean implements DisposableBean {
public void destroy() {
// do some destruction work
}
}
上述方式可透過Spring中的Bean去設定
HelloWorld.java
package com.example ;
public class HelloWorld {
private String message ;
public void init(){
System.out.println("Initialization now") ;
}
public void getMessage(){
System.out.println("Your Message : " + message);
}
public void setMessage(String message) {
this.message = message;
}
public void destroy(){
System.out.println("Destory now") ;
}
}
透過registerShutdownHook()去呼叫destroy()
Main.java
package com.example ;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
AbstractApplicationContext context =
new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
obj.getMessage();
context.registerShutdownHook();
}
}
Beans.xml
針對不同Bean的init-method和destroy-method不需要每次都設定,可按照下列方式default設定
Beans.xml
結果顯示如下所示:
Initialization now Your Message : Hello World! Destory now
全站熱搜
留言列表
