• Spring的使用


    Spring具有两个最基本的功能

    1. 将对象存储到IOC容器(Spring)中
    2. 将对象从容器中取出来

    1. 存储Bean对象

    在Java中对象也叫做Bean

    1. 存储Bean之前,要先有Bean才行,所以要先创建一个Bean对象
    public class User {
    	public void sayHi(String name) {
    		System.out.println("hello:" + name);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 将创建的Bean注册到Spring容器中

    我们需要在项目的resources中添加Spring的配置文件spring-config.xml,Spring配置文件中的内容是固定的,如下所示:

    
    <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 http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    
    beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    接下来将要存入容器的Bean对象写入xml中
    作用:告诉Spring在启动加载的时候,捎上这个Bean对象,将Bean对象存入容器中

    
    <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 http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    	
           <bean id="user" class="User">bean>
    beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注入Bean对象中的 id属性就类似于IP的域名,而class属性就类似点分十进制的IP,因为在class属性是“包名+类名”,在实际项目中包会非常多,对程序员不友好,因此使用id属性就相当于给这个Bean对象取了个别名。

    2. 获取并使用Bean对象

    1. 得到Spring上下文(即Spring)对象,因为对象都交给Spring管理了,所以获取对象要从Spring中获取,那么就要先得到Spring上下文。
    2. 通过Spring上下文,获取到某一个Bean对象
    3. 使用Bean对象
    public class App {
    	public static void main(String[] args) {
    		//1. 得到Spring的上下文对象,需要写上Spring配置信息的名称
    		ApplicationContext context =
    			new ClassPathXmlApplicationContext("spring-config.xml");
    		//2. 通过Spring对象,获取到Bean对象
    		//根据id属性来取Bean对象
    		User user = (User) context.getBean("user");
    		//3. 使用Bean对象
    		user.sayHi("张三");
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.1 获取Spring上下文的两种方式

    上面是较优的写法,下面介绍的方法是过时的方法

    BeanFactory beanFactory = 
    	new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
    
    • 1
    • 2

    面试题:ApplicationContext和BeanFactory的区别

    1. 从继承关系上看:ApplicationContext是BeanFactory的子类,除了具有BeanFactory的所有功能,他还拥有其他特性,如国际化支持,资源访问支持,事件传播的支持
    2. 从性能上看:BeanFactory诞生比较早,当时硬件资源比较稀缺,因此他加载Bean对象的方式是懒汉模式,性能较低;而ApplicationContext是一次性加载并初始化所有Bean对象,性能更高。
    2.2 获取Bean对象的三种方法
    1. 在上面的代码中是通过id属性来获取的,得到的是Object对象需要强转,这就有可能出现两种情况(1)获取到的对象为Null,再去强转;(2获取到的Bean对象可能是其他对象,强转时会出现问题。
    2. 我们可以通过对象类型来获取Bean。
    User user = context.getBean(User.class);
    
    • 1

    可能出现的问题
    image.png

    1. 推荐写法:id+对象类型都写
    User user = context.getBean("user", User.class);
    
    • 1
  • 相关阅读:
    SpringMVC的执行流程及初始化流程
    在非金融应用中在哪里使用区块链?
    Osgb转3DTiles工具
    Win10一键重装系统后计算机图标怎么调出来
    python简单练习案例-石头剪刀布小游戏
    Java 8 中 常用的 LocalDateTime 操作
    easyExcel快速入门
    翻译: Github Copilot 可以创作艺术吗?
    Linux之慢盘检测
    单链表在线OJ题二(详解+图解)
  • 原文地址:https://blog.csdn.net/weixin_61427900/article/details/130913178