首页 > 其他分享 >Spring-基于XML管理bean

Spring-基于XML管理bean

时间:2022-09-20 14:22:42浏览次数:74  
标签:XML Spring HelloWorld 获取 bean 类型 class

1. 导入依赖

pom.xml

<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. 创建类

HelloWorld.java

public class HelloWorld {
    public void sayHello(){
        System.out.println("hello,spring");
    }
}

3. 创建Spring的配置文件并配置bean

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.xsd">
   
    <bean id="helloWorld" class="com.spring.pojo.HelloWorld"></bean>
</beans>

  配置HelloWorld所对应的bean,即将HelloWorld的对象交给Spring的IOC容器管理通过bean标签配置IOC容器所管理的bean.

bean:配置一个bean对象,将对象交给IOC容器管理
 属性:
           id:bean的唯一标识,不能重复
       class:设置bean对象所对应的类型

4. 创建测试类测试 

public class HelloWorldTest {
    @Test
    public void test(){
        //获取IOC容器
        ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取ioc容器中的bean对象
        HelloWorld helloWorld = (HelloWorld) ioc.getBean("helloWorld");
        helloWorld.sayHello();

    }
}

5. Spring如何创建对象

  Spring 根据当前配置的bean标签来创建对象(class属性知道了对象的类型),而在Spring IOC中可以配置多个bean,所以类型是不确定的,在不确定的情况下,IOC使用反射技术和工厂模式来创建对象。

  Spring 底层默认通过反射技术调用组件类的无参构造器来创建组件对象。

  通过 Class.forName().getNewInstance() 创建实例对象

6. 获取bean的三种方式

(1)通过bean的id来获取  :

  HelloWorld helloWorld = (HelloWorld) ioc.getBean("helloWorld");   

(helloWorld 表示 bean 的 id )

(2)根据bean的类型获取:

 注意:根据类型获取bean时,要求IOC容器中有且只有一个类型匹配的bean

 若没有任何一个类型匹配的bean,此时抛出异常:NoSuchBeanDefinitionException

 若有多个类型匹配的bean,此时抛出异常:NoUniqueBeanDefinitionException

     HelloWorld helloWorld = ioc.getBean(HelloWorld.class);

(类的class对象,若在ioc容器中有多个类型匹配的bean,就获取不到)

(3)根据bean的id和类型获取

扩展:

如果组件类实现了接口,根据接口类型可以获取 bean

<bean id="helloWorld" class="com.spring.pojo.HelloWorld"></bean>
//类
public class HelloWorld implements Hello{
    public void sayHello(){
        System.out.println("hello,spring");
    }
}
//实现
Hello hello = ioc.getBean(Hello.class);

   如果一个接口有多个实现类,这些实现类都配置了 bean,根据接口类型不能获取 bean。

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

即通过bean的类型、bean所继承的类的类型、bean所实现的接口的类型都可以获取bean。

标签:XML,Spring,HelloWorld,获取,bean,类型,class
From: https://www.cnblogs.com/Joyce-mi7/p/16710874.html

相关文章

  • spring boot 自定义 yml 配置需要用到的注解
    importlombok.Data;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.context.annotation.Configuration;......
  • SpringBoot实战电商项目商城(50k+star)地址:github.com/macrozheng/...
    经常遇到小伙伴问我之前写的技术文章在哪里。或者用很久以前的部署文档问我,为什么不能按照这篇文章进行部署。其实如果他们上过我的实战教程网站,估计就不会出现这样的问题......
  • SpringBoot Xml转Json对象
    一、导入需要的依赖<dependency><groupId>maven</groupId><artifactId>dom4j</artifactId><version>1.7-20060614</version></dependency>二、xml......
  • spring源码解析(一)
    beanFactory是application的父接口是spring的关键容器,主要的applicationContext都组合了他的功能,关系如图beanFactory功能只有getBeanioc,依赖注入,bean......
  • springboot项目启动报错:找不到或无法加载主类 com....
    springboot项目报错找不到或无法加载主类com....1.如果是导入的别人的项目首先要配置好JDK和MAVEN然后点击右侧栏的maven图标--->点击clean(清除掉源有的配置)--》......
  • 第5章 Spring Boot实现Web的常用功能
    在Web开发中,会涉及到静态资源的访问支持、视图解析器的配置、转换器和格式化器的定制、文件上传下载等功能,甚至还需要考虑到与Web服务器关联的Servlet相关组件的定制,Spring......
  • Spring(六):Spring配置说明
    一、bean<beanid="user"class="com.jms.pojo.User"name="aaa,bbb"><constructor-argname="name"value="jms"/></bean> bean有三个属性:1.id......
  • 推荐 2 个 Spring Boot 的工作流项目
    推荐2个SpringBoot的工作流项目程序员闪充宝 2022-09-1417:31 发表于山西程序员闪充宝我是一个技术闪充宝,帮你快速获取更多的技术和经验。14篇原创内容......
  • SpringMVC简介 | SpringMVC
    SpringMVC简介开发步骤1.导入SpringMVC包2.配置Servlet3.编写POJO(控制器Controller)4.将Controller使用注解配置到Spring容器中5.配置组件扫描spring-mvc.xml6.......
  • Spring
    1、Spring1.1、简介Spring:春天---->给软件行业带来了春天!2002,首次推出了Spring框架的雏形:interface21框架!Spring框架即以interface21框架为基础,经过重新设计,并不断丰......