Spring 基礎入門-day03

1.接上面組件掃描常用標註的補充

@Scope("singleton")  指定作用域

程序默認就是單例的,prototype爲多例。驗證方法:

Card card = app.getBean(Card.class);
Card card2 = app.getBean(Card.class);
System.out.println(card==card2);

返回ture爲單例,false爲多例!

@PostConstruct 指定初始化方法

要想構造方法起作用必須在構造方法前加上這個標註!

//構造初始化方法
 	@PostConstruct
 	public void init() {
		this.point="A";
	}

@PreDestroy  指定銷燬方法

銷燬函數,起作用必須加上此標註,且程序的作用域必須是單例的

驗證方法必須使用來獲取對象,還要記得關閉!!

AbstractApplicationContext app =  new ClassPathXmlApplicationContext("applicationContext.xml");

app.close();

@PreDestroy
 	public void destory() {
		System.out.println("game over");
	}

2 和DI相關的標註

@Value 用來解決基本值的注入問題 如果要注入複雜值 則需要結合EL表達式

              可以用在 成員變量  set方法

@Autowired 用來解決複雜值的裝配問題

             可以用在 成員變量  set方法  構造方法

             優先使用類型進行匹配 如果類型有衝突  則啓用名字進行裝配

             對組件的依賴是強依賴(依賴的組件必須存在 否則報錯)

             可以使用required屬性指定是false      組件之間變成弱依賴性

             也可以指定set方法參數名字查找需要結合@Qualifier  

@Qualifier   不能用在構造方法上 如果找不到對應的組件 也不會啓用類型查找

@Resource 是JavaEE(JDK)規範的標籤非Spring框架的;也可以作用於字段或者setter方法;必須要求有匹配的對象;

      找bean的方式:
      1),首先按照set方法的名字去找,如果找到,就使用setter或者字段注入;
      2),如果按照名字找不到,再按照類型去找,但如果找到多個匹配類型,報錯;
      3),可以直接使用name屬性指定bean的名稱;但是,如果指定的name,就只能按照name去找,如果找不到,就不會再按照類型去找;

弄清楚有四個和組件創建相關的標註有3組和組件裝配的標註

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章