Spring----getBean的四种用法

一般默认Spring的配置文件叫applicationContext.xml。放在类路径下,即src下。当然也可以起名叫其他的,比如haha.xml。


在Students的基础上:

类路径下的配置文件:applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                      http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
        
    <bean id="mydevice" class="com.entity.MoveDisk">
        
    </bean>
    
    <!-- bean配置无论是name还是id,都不允许重名 -->
    <!-- 同一个bean的name可以起多个别名,但id不行 -->
    <bean name="stu,s1,s2" class="com.entity.Students">
        <property name="sid" value="s001"/>
        <property name="name" value="茜茜"/>
    </bean>
    <bean name="stu2" class="com.entity.Students">
        <property name="sid" value="s002"/>
        <property name="name" value="梦茜"/>
    </bean>
</beans>

磁盘上的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                      http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
        
    <bean id="mydevice" class="com.entity.MoveDisk">
        
    </bean>
    
    <!-- bean配置无论是name还是id,都不允许重名 -->
    <!-- 同一个bean的name可以起多个别名,但id不行 -->
    <bean name="stu3" class="com.entity.Students">
        <property name="sid" value="s003"/>
        <property name="name" value="女神"/>
    </bean>
</beans>

测试:---四种不同的getBean方法

package com.entity;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class StudentsTest {
    
    @Test
    public void fun1(){
        //获得上下文对象----类路径下
        //获取磁盘上的文件
        //ApplicationContext ctx=new FileSystemXmlApplicationContext("F:\\haha\\test.xml");
        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
        //1.getBean(String id|name);要求id和name都不能重复。
        //Students s = (Students) ctx.getBean("stu2");
        
        //2.getBean(Class clazz);通过类型来加载bean,要求类型必须是唯一的***
        //Students s=ctx.getBean(Students.class);//注意:这里无需类型转换。
        
        //3.getBean(String id|name,Class clazz);
        Students s=ctx.getBean("stu2", Students.class);
        
        //4.getBean(String id|name, Object ...) ==>getBean(String id|name, Object[] )
        //调用指定id的指定的构造方法来获得对象。
        
        
        System.out.println(s);    
        
        ((AbstractXmlApplicationContext)ctx).close();//类似流,用完关闭。
    }
}

 

posted @ 2019-07-12 15:27  微微亮  阅读(19693)  评论(0编辑  收藏  举报