計算機(jī)二級考試JAVA基礎(chǔ):Bean的配置

字號:

以下面的xml文件舉例
    
    
    
    
    

    
    
    
    

    第一個Bean的名稱為role,第二個bean的名稱為medicine,第三個bean的名稱為spring.chapter.mary.Poison,第四個bean的名稱為spring.chapter.mary.Poison#1
    id和name的區(qū)別如下
    id屬性具有性,每一個Bean只能對應(yīng)一個id
    name屬性可以指定一個或多個名稱,各個名稱用逗號分開,第一個是默認(rèn)為標(biāo)示名稱,后面的為這個Bean的別名。
    例如
    ,這里只創(chuàng)建出來一個Bean,注意只有一個。
    每一個Bean中都有一個class屬性。
    Bean作用域
    1singleton作用
    
    該Bean的作用域設(shè)置為singleton,那么springIOC冗長中只會存在一個共享的bean實例。
    即兩次調(diào)用后,Role role = (Role)factory.getBean("role");Role role1 = (Role)factory.getBean("role");
    role == role1 的值為 true
    2prototype作用
    prototype作用與部署的bean,每一次請求都會產(chǎn)生一個新的bean實例,
    或者,
    role == role1 的值為 false
    還有其他作用域,這里不再介紹
    Bean的屬性,spring有兩種注入方式,一種set注入,一種構(gòu)造子注入。在配置文件總選擇那種方式取決于實體類。
    (1)實體類的每個變量都有set方法,此時使用property屬性來配置
    (2)史泰龍使用構(gòu)造函數(shù)來配置,此時使用屬性來配置
    若一個類中既有構(gòu)造方法,又有set方法
    如下:package chapter1;
    import org.springframework.beans.factory.xml.XmlBeanFactory;
    import org.springframework.core.io.ClassPathResource;
    import org.springframework.core.io.Resource;
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.xml.XmlBeanFactory;
    public class Hello {
    private String msg;
    private int example;
    public Hello(String msg,int example)
    {
    this.msg = msg;
    this.example = example;
    }
    public void setExample(int example) {
    this.example = example;
    }
    public void setMsg(String msg)
    {
    this.msg = msg;
    }
    public void sayHello()
    {
    System.out.println(msg);
    System.out.println(example);
    }
    public static void main(String[] args)
    {
    Resource res = new ClassPathResource("chapter1/bean.xml");
    BeanFactory factory = new XmlBeanFactory(res);
    Hello hello = (Hello)factory.getBean("helloBean");
    hello.sayHello();
    }
    }
    配置文件為:
    
    
    
    
    

    
或者
    
    
    
    

    
    
    

    則最后輸出結(jié)果為:abc 20
    可見是set方法起作用。