1. 程式人生 > >spring 單例多例,預設,懶載入,初始化呼叫

spring 單例多例,預設,懶載入,初始化呼叫

(1)spring 預設是單例,

單例情況下:所有執行緒對於同一個類共同擁有一個物件,此時如果在類裡面建立一個類變數如下

由於所有執行緒共享一個類物件,所以也共享一個類變數,每次請求都會增加

@Controller
@RequestMapping("/user")
public class User {
	
	private int i=0;//類變數
	
	@RequestMapping("/list.shtm")
	public String list()
	{
		i++;
		System.out.println("此變數會一直增加"+i);
		return "";
	}

}

(2)spring 預設不是懶載入

    當spring不是懶載入時,專案啟動,spring 初始化,spring 會把所有的 掃描包下的 ,所有帶spring 註解(@Component、@Repository、@Service、@Controller)的類  都初始化,初始化時,會呼叫預設構造方法,即 空的構造方法,當定義了public AA(){   程式碼塊  }   空構造方法時,就會自動執行空構造方法中的語句,當在類中加入非空構造方法,spring會報錯誤,找不到合適的構造方法。

   當spring 設定了default-lazy-init="true",即懶載入時,spring並不會主動初始化帶註解的類,由於在controller中會注入 service層的類,由於,controller層的spring-mvc 不是懶載入,所以,當在controller中注入service時,就會初始化此service類。即呼叫到誰初始化誰。