【Spring】【一】基本註解以及小實例


基本註解:

1.標註 bean類 
————————————————————
@Component:標準一個普通的spring Bean類。
@Controller:標註一個控制器組件類。
@Service:標註一個業務邏輯組件類。
@Repository:標註一個DAO組件類。
————————————————————
2. 作用域
————————————————————
@Scope :prototype、request、session、global session
————————————————————
3.自動裝配
————————————————————
 @Autowired
————————————————————

@Configuration把一個類作爲一個IoC容器,它的某個方法頭上如果註冊了@Bean,就會作爲這個Spring容器中的Bean。
@Scope註解 作用域
@Lazy(true) 表示延遲初始化
@Service用於標註業務層組件、 
@Controller用於標註控制層組件(如struts中的action)
@Repository用於標註數據訪問組件,即DAO組件。
@Component泛指組件,當組件不好歸類的時候,我們可以使用這個註解進行標註。

@Scope用於指定scope作用域的(用在類上)
@PostConstruct用於指定初始化方法(用在方法上)
@PreDestory用於指定銷燬方法(用在方法上)
@DependsOn:定義Bean初始化及銷燬時的順序
@Primary:自動裝配時當出現多個Bean候選者時,被註解爲@Primary的Bean將作爲首選者,否則將拋出異常
@Autowired 默認按類型裝配,如果我們想使用按名稱裝配,可以結合@Qualifier註解一起使用。如下:
@Autowired @Qualifier("personDaoBean") 存在多個實例配合使用
@Resource默認按名稱裝配,當找不到與名稱匹配的bean纔會按類型裝配。

@PostConstruct 初始化註解
@PreDestroy 摧毀註解 默認 單例  啓動就加載
@Async異步方法調用

______________________________________________________________________
bean.xml
搜索 某個包下的所有類
 <context:component-scan base-package="com.kn.beanScope" />

______________________________________________________________________


OH.java

注意@Component 註解,即 標註一個普通的bean 
package com.kn.beanScope;

import org.springframework.stereotype.Component;

@Component
public class OH {
    public void sout(){
        System.out.println("???? THIS IS OH date!");
    }
}

BeanScope.java
@Scope 設定作用域 爲 每次新建自身實例
package com.kn.beanScope;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

@Component
@Scope("prototype")
public class BeanScope {
    @Autowired
    private OH oh;
    private String beanname;
    public void say(){
        System.out.println("BeanScope say :"+this.hashCode()+"from "+beanname);
        oh.sout();
    }
    public  void init(){
        beanname="FFF";
    }
    public  void destroy(){
        beanname="GGGG";
        say();
    }


}

測試類:
UserAxeTest.java

        ApplicationContext ctx = new ClassPathXmlApplicationContext("bean_Zj.xml");

        BeanScope beanScope=ctx.getBean("beanScope",BeanScope.class);
        beanScope.init();
        beanScope.say();
        BeanScope beanScope1=ctx.getBean("beanScope",BeanScope.class);
        beanScope1.say();
獲取兩次 beanScope 然後 第一次先調用init 再say,第二次 直接say

結果:

BeanScope say :1873859565from FFF
???? THIS IS OH date!
BeanScope say :1843289228from null
???? THIS IS OH date!

可以看出,是兩個不同的實例。
第一次成功初始化,from FFF 第二次則爲null。




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