Spring的创建和使用

目录

Spring 是⼀个包含了众多⼯具⽅法的 IoC 容器。那么它就具备以下功能:

1.将对象存储到容器中

2 从容器中将对象取出来

Spring的创建

使⽤ Maven ⽅式来创建⼀个 Spring 项⽬,总共分为三步:

  1. 创建一个普通的Maven项目
  2. 添加Spring框架支持(spring-context、spring-beans)
  3. 添加启动类

1.创建一个普通的Maven项目

然后点击下面创建

2.添加spring框架支持

在项目的pom.xml中,添加spring框架支持,xml的配置如下:

java 复制代码
  <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>

上述添加的模块有spring-context :spring上下文 ,还有 spring-beans:管理对象模块

3.添加启动类

在创建好的项目中的java文件夹中创建一个启动类,包含main方法即可:

java 复制代码
public class Test {
    public static void main(String[] args) {
        
    }
}

存储Bean对象

存储Bean对象分为以下两步:

  1. 创建Bean
  2. 将创建的Bean注册到Spring容器当中

1. 创建Bean

Bean就是Java中的一个普通对象,实现代码如下:

java 复制代码
public class User {
    public String sayHi(String name){
        return  name+"你好!";
    }
}

2.将Bean注册到容器当中

在 resources 根⽬录下添加Spring配置文件spring-config.xml

Spring配置文件格式固定,所以找地方保存即可
配置文件gitee地址

java 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:content="http://www.springframework.org/schema/context"
       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>

<beans> 中添加如下配置,即可将User对象注册到Spring中去

java 复制代码
<bean id="user" class="User"></bean>

获取并使用Bean对象

获取并使用Bean对象需要三步:

  1. 得到Spring上下文
  2. 通过Spring上下文,获取某一个指定的Bean对象
  3. 使用Bean对象

1.得到Spring上下文

Spring 上下⽂对象可使⽤ ApplicationContext得到,实现代码如下:

java 复制代码
   //获取spring上下文,创建的时候需要配置 Spring 配置信息
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");

也可以使用BeanFactory得到Spring上下文

java 复制代码
 BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));

两者效果是一样的,ApplicationContext是BeanFactory的子类

常见面试题

ApplicationContext与BeanFactory

1.继承关系和功能⽅⾯来说:Spring 容器有两个顶级的接⼝:BeanFactory 和ApplicationContext。其中 BeanFactory 提供了基础的访问容器的能⼒,⽽ ApplicationContext属于 BeanFactory 的⼦类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性,还添加了对国际化⽀持、资源访问⽀持、以及事件传播等⽅⾯的⽀持

2.从性能⽅⾯来说:ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象,⽽BeanFactory 是需要那个才去加载那个,因此更加轻量。

2. 获取指定Bean对象

java 复制代码
 //获取指定的Bean对象,使用名称获取
        User user = (User) applicationContext.getBean("user");
  //获取指定的Bean对象类型进行获取
        User user = (User) applicationContext.getBean(User.class);
  //获取指定的Bean对象名称+类型进行获取
        User user = (User) applicationContext.getBean("user",User.class);      

注意

当有⼀个类型被重复注册到 spring-config.xml 中时,只能使⽤根据名称获取。

3. 使用Bean对象

java 复制代码
public class Test {
    public static void main(String[] args) {
        //获取spring上下文,创建的时候需要配置 Spring 配置信息
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
        //BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
    //获取指定的Bean对象名称+类型进行获取
        User user = (User) applicationContext.getBean("user",User.class);
       //调用指定对象相应方法
        System.out.println(user.sayHi("朱星星"));

    }
}

运行main方法

总结

  1. 操作容器之前,需要先得到容器。
  2. 存对象
  • 创建 Bean
  • 将 Bean 注册(配置)到 spring-confing.xml 中
  1. 取对象
  • 得到 Spring 上下⽂,并读取到 Spring 的配置⽂件
  • 获取某⼀个 Bean 对象
  • 使用Bean对象
相关推荐
深圳蔓延科技13 分钟前
Kafka的高性能之路
后端·kafka
Barcke14 分钟前
深入浅出 Spring WebFlux:从核心原理到深度实战
后端
JuiceFS15 分钟前
从 MLPerf Storage v2.0 看 AI 训练中的存储性能与扩展能力
运维·后端
大鸡腿同学17 分钟前
Think with a farmer's mindset
后端
Moonbit37 分钟前
用MoonBit开发一个C编译器
后端·编程语言·编译器
Reboot1 小时前
达梦数据库GROUP BY报错解决方法
后端
稻草人22221 小时前
java Excel 导出 ,如何实现八倍效率优化,以及代码分层,方法封装
后端·架构
渣哥1 小时前
原来 Java 里线程安全集合有这么多种
java
间彧2 小时前
Spring Boot集成Spring Security完整指南
java
掘金者阿豪2 小时前
打通KingbaseES与MyBatis:一篇详尽的Java数据持久化实践指南
前端·后端