首页 > 其他分享 >day119 - spring-获取bean

day119 - spring-获取bean

时间:2023-07-25 19:57:46浏览次数:32  
标签:spring day119 获取 bean Student 类型 ioc id

获取bean

根据id获取

上一篇的入门文章讲解的就是根据id获取bean的方式

根据类型获取

@Test
public void testIOC(){
    //获取ioc容器
    ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-ioc.xml");
    //获取bean
    Student student = ioc.getBean(Student.class);
    System.out.println(student);
}

 

根据id和类型获取

@Test
public void testIOC(){
    //获取ioc容器
    ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-ioc.xml");
    //获取bean
    //Student studentOne = (Student) ioc.getBean("studentOne");
    //Student student = ioc.getBean(Student.class);
    Student student = ioc.getBean("studentOne", Student.class);
    System.out.println(student);
​
}

 

注意

当根据类型获取bean时,要求IOC容器中指定类型的bean有且只能有一个

如下:

<bean id="helloworldOne" class="com.gu.spring.HelloWorld"></bean> 
<bean id="helloworldTwo" class="com.gu.spring.HelloWorld"></bean>

 

会报错:

NoUniqueBeanDefinitionException:

总结:

根据类型来获取bean时,在满足bean唯一性的前提下,其实只是看:『对象 instanceof 指定的类型』的返回结果,只要返回的是true就可以认定为和类型匹配,能够获取到。

/**
 * 获取bean的三种方式:
 * 1. 根据bean的id获取
 * 2. 根据bean的类型获取
 * 注意:根据类型获取bean时,要求ioc容器中有且只有一个类型匹配的bean
 * 若一个都没有,没有任何一个类型匹配的bean,抛出异常NoSuchBeanDefinitionException
 * 若有多个,抛出异常NoUniqueBeanDefinitionException
 * 3. 根据bean的id和类型获取
 * 结论:
 * 根据类型来获取bean时,在满足bean唯一性的前提下,
 * 其实只看对象 instanceof指定的类型的返回结果
 * 只要返回的是true就可以认定为类型匹配,能够获取到
 * 即通过bean的类型或者bean所继承的类或者所实现的接口的类型都可以获取bean
 */

 

over

标签:spring,day119,获取,bean,Student,类型,ioc,id
From: https://www.cnblogs.com/GUGUZIZI/p/17580828.html

相关文章

  • Spring Boot 集成 Swagger 在线接口文档
    今天看了SpringBoot集成Swagger在线接口文档有关的很多东西,简单总结下我学习到的,以供之后复习参考。学习目标:在学习过程中,主要掌握在SpringBoot中如何导入Swagger工具来展现项目中的接口文档。1.Swagger简介1.1 Swagger解决的问题    随着互联网技术的发展......
  • 【后端面经-Spring】Spring简介
    【后端面经-Spring】Spring简介目录【后端面经-Spring】Spring简介1.Spring简介2.Spring模块3.Spring核心特性4.Spring的后续拓展面试模拟参考资料1.Spring简介Spring是为了简化java项目开发设计的一款设计层面开源框架,其设计目的就是为了“简化开发”。它使用分层架构,解......
  • Springboot初学
    Springboot学习:参考网页:https://blog.csdn.net/sunroyi666/article/details/951899381.下载maven,修改配置:参考网页:https://blog.csdn.net/a805814077/article/details/1005459282.创建springbootEureka:遇到问题;Cannotresolvesymbol'springframework'解决方法:检查maven......
  • springsession 配置redis集群
    SpringSession配置Redis集群教程1.流程概述在本教程中,我们将详细介绍如何使用SpringSession来配置Redis集群。整个流程可以总结为以下几个步骤:添加SpringSession和Redis依赖配置Redis集群连接信息配置SpringSession使用Redis集群测试SpringSession与Redis集群的连接......
  • springboot项目分层架构
    SpringBoot项目分层架构SpringBoot是一个用于构建Java应用程序的开源框架,它提供了快速开发的特性,使得开发人员可以更加专注于业务逻辑的编写。在开发一个SpringBoot项目时,良好的分层架构是非常重要的,它可以帮助我们更好地组织代码并提高项目的可维护性和可扩展性。本文将介绍一......
  • springbootredis集群配置
    SpringBootRedis集群配置在分布式系统中,Redis是一个常用的内存数据库,用于缓存和存储数据。Redis集群是多个Redis实例的组合,通过分片和复制技术,提供高可用性和可扩展性。本文将介绍如何在SpringBoot中配置Redis集群,并提供相应的代码示例。1.搭建Redis集群首先,我们需要搭建Red......
  • springboot2整合redis
    SpringBoot2整合Redis概述本文旨在指导刚入行的开发者如何在SpringBoot2中实现Redis的整合。Redis是一种高性能的内存数据库,常用于缓存、消息队列和分布式会话等场景。通过将Redis与SpringBoot2整合,我们可以更方便地使用Redis提供的各种功能。整合步骤下表......
  • springboot+javaCV
    实现springboot+javaCV的步骤1.创建SpringBoot项目首先,我们需要创建一个基于SpringBoot的Java项目。可以通过使用SpringInitializer来创建一个基本的项目结构。在创建项目时,我们需要添加合适的依赖项,以便使用JavaCV库。2.添加JavaCV依赖在创建的SpringBoot项目中,我们需要......
  • springboot redis 缓存数据
    SpringBootRedis缓存数据实现教程一、整体流程下面是实现SpringBootRedis缓存数据的整体流程:步骤操作1引入Redis依赖2配置Redis连接信息3创建缓存注解4使用缓存注解接下来,我将逐步介绍每个步骤需要做的事情,包括需要使用的代码以及代码的注释。二......
  • springboot mysql 配置 propertis
    SpringBootMySQL配置Properties在SpringBoot应用程序中,我们经常需要使用MySQL数据库来存储和检索数据。为了连接和配置MySQL数据库,我们可以使用application.properties文件。这篇文章将向您展示如何使用SpringBoot的application.properties文件来配置MySQL数据库连接。1.引......