创建Spring工程以及如何获取Bean

1.创建maven项目,在其pom.xml中增加打包方式并导入依赖:

 <groupId>com.ahnu</groupId>
    <artifactId>Spring_Helloword</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
<dependencies>
    <!-- 基于Maven依赖传递性,导入spring-context依赖即可导入当前所需所有jar包 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.1</version> </dependency>
    <!-- junit测试 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    </dependencies>

2.创建Spring的配置文件
在这里插入图片描述
3.在spring配置文件中配置Bean

<!--配置HelloWorld所对应的bean,即将HelloWorld的对象交给Spring的IOC容器管理 通过bean标签配置IOC容器所管理的bean 
属性:id:设置bean的唯一标识    class:设置bean所对应类型的全类名 -->
 <bean id="helloworld" class="com.atguigu.spring.bean.HelloWorld"></bean>

4.创建测试类,获取Bean对象,调用该Bean对象中的方法。

@Test public void testHelloWorld()
{ 
	ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); 
	HelloWorld helloworld = (HelloWorld) ac.getBean("helloworld");
	helloworld.sayHello();
}

注意:Spring 底层默认通过反射技术调用组件类的无参构造器来创建组件对象,这一点需要注意。

4.获取Bean对象的方式:
4.1根据id来获取,上文就是此方式。
4.2根据类型获取

@Test public void testHelloWorld(){
	 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
	 HelloWorld bean = ac.getBean(HelloWorld.class); 
	 bean.sayHello();
	  }

4.3根据id和类型

@Test public void testHelloWorld(){ 
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); 
HelloWorld bean = ac.getBean("helloworld", HelloWorld.class); 
bean.sayHello(); }

注意:
当根据类型获取bean时,要求IOC容器中指定类型的bean有且只能有一个
当IOC容器中一共配置了两个时会报异常。
扩展:
如果组件类实现了接口,根据接口类型可以获取 bean 吗?
可以,前提是bean唯一,该接口只有一个实现类。
如果一个接口有多个实现类,这些实现类都配置了 bean,根据接口类型可以获取 bean 吗?
不行,因为bean不唯一,这时不知道该选择哪一个实现类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值