Spring 创建和使用

简介: spring-core的创建与使用

 目录

 

1.创建 Spring 项目

1.1 创建⼀个 Maven 项⽬

1.2 添加 Spring 框架支持

1.3 添加启动类

2.存储 Bean 对象

2.1 创建 Bean

2.2 将 Bean 注册到容器

3.获取并使用 Bean 对象

3.1 创建 Spring 上下⽂

ApplicationContext VS BeanFactory(常⻅⾯试题)

3.2 获取指定的 Bean 对象

3.2.1 注意事项

3.2.2 getBean ⽅法的更多⽤法

3.3 使用 Bean

4.总结


Spring 是⼀个包含了众多⼯具⽅法的 IoC 容器。既然是容器那么 它就具备两个最基本的功能:

    • 将对象存储到容器(Spring)中;
    • 从容器中将对象取出来。

    1.创建 Spring 项目

    使⽤ Maven ⽅式来创建⼀个 Spring 项⽬,创建 Spring 项⽬和 Servlet 类似,总共分为以下 3 步:

      1. 创建⼀个普通 Maven 项⽬。
      2. 添加 Spring 框架⽀持(spring-context、spring-beans)。
      3. 添加启动类。

      1.1 创建⼀个 Maven 项⽬

      image.gif编辑

      1.2 添加 Spring 框架支持

      在项⽬的 pom.xml 中添加 Spring 框架的⽀持,xml 配置如下:

      <dependencies>
       <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-context</artifactId>
       <version>5.2.3.RELEASE</version>
       </dependency>
       <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-beans</artifactId>
       <version>5.2.3.RELEASE</version>
       </dependency>
      </dependencies>

      image.gif

      从上述配置中可以看出,添加的框架有 spring-context:spring 上下⽂,还有 spring-beans:管理对象的模块。

      写入完成后记得刷新。

      image.gif编辑

      1.3 添加启动类

      最后在创建好的项⽬ java ⽂件夹下创建⼀个启动类,包含 main ⽅法即可:

      image.gif编辑

      2.存储 Bean 对象

      存储 Bean 分为以下 2 步:

        1. 存储 Bean 之前,先得有 Bean 才⾏,因此先要创建⼀个 Bean。
        2. 将创建的 Bean 注册到 Spring 容器中。

        具体实现如下。

        2.1 创建 Bean

        所谓的 Bean 就是 Java 语⾔中的⼀个普通对象,实现代码如下:

        image.gif编辑

        2.2 将 Bean 注册到容器

        在创建好的项⽬中添加 Spring 配置⽂件 spring-config.xml,将此⽂件放到 resources 的根⽬录下,如下图所示:

        image.gif编辑

        Spring 配置⽂件的固定格式为以下内容

        <?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">
        </beans>

        image.gif

        接下来,再将 User 对象注册到 Spring 中就可以,具体操作是在 <beans> 中添加如下配置:

        <beans>
                <bean id="user" class="org.example.User"></bean>
            </beans>

        image.gif

        3.获取并使用 Bean 对象

        获取并使⽤ Bean 对象,分为以下 3 步:

          1. 得到 Spring 上下⽂对象,因为对象都交给 Spring 管理了,所以获取对象要从 Spring 中获取,那 么就得先得到 Spring 的上下⽂。
          2. 通过 Spring 上下⽂,获取某⼀个指定的 Bean 对象。
          3. 使⽤ Bean 对象。

          如果取多个 Bean 的话重复以上第 2、3 步骤。

          3.1 创建 Spring 上下⽂

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

          // 1.得到 Spring 的上下⽂对象,创建的时候需要配置 Spring 配置信息
          ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

          image.gif

          除了 ApplicationContext 之外,我们还可以使⽤ BeanFactory 来作为 Spring 的上下⽂,如下代码所示:

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

          image.gif

          ApplicationContext 和 BeanFactory 效果是⼀样的,ApplicationContext 属于 BeanFactory 的⼦ 类,它们的区别如下。

          ApplicationContext VS BeanFactory(常⻅⾯试题)

            • 继承关系和功能⽅⾯来说:Spring 容器有两个顶级的接口:BeanFactory 和 ApplicationContext。其中 BeanFactory 提供了基础的访问容器的能⼒,⽽ ApplicationContext 属于 BeanFactory 的⼦类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性, 还添加了对国际化⽀持、资源访问⽀持、以及事件传播等⽅⾯的⽀持。
            • 从性能⽅⾯来说:ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象,⽽ BeanFactory 是需要那个才去加载那个,因此更加轻量。

            PS:⽽ ClassPathXmlApplicationContext 属于 ApplicationContext 的⼦类,拥有 ApplicationContext 的所有功能,是通过 xml 的配置来获取所有的 Bean 容器的。

            3.2 获取指定的 Bean 对象

            // 2.加载某个 bean
            User user = (User) context.getBean("user");

            image.gif

            3.2.1 注意事项

            Bean 的 Id 要⼀⼀对应,如下图所示:

            image.gif编辑

            3.2.2 getBean ⽅法的更多⽤法

            getBean() ⽅法有很多种重载⽅法,我们也可以使⽤其他⽅式来获取 Bean 对象,⽐如以下这两种:

            根据类型获取 Bean:

            User user1 = context.getBean(User.class);

            image.gif

            或以下这种,名称 + 类型获取 Bean:

            User user2 = context.getBean("user",User.class);

            image.gif

            ⼆者的区别:当有⼀个类型被重复注册到 spring-config.xml 中时,只能使⽤根据名称获取了,⽐如以下程序:

            image.gif编辑

            image.gif编辑

            以上场景就会导致程序报错,如下图所示:

            image.gif编辑

            3.3 使用 Bean

            public class App {
             public static void main(String[] args) {
             // 1.得到 Spring 上下⽂对象
             ApplicationContext context =
             new ClassPathXmlApplicationContext("spring-config.xml");
             // 2.加载某个 bean
             User user = (User) context.getBean("user");
             // 3.调⽤相应的⽅法
             System.out.println(user.sayHi("Java"));
             }
            }

            image.gif

            4.总结

            1. 操作容器之前,先要有容器,所以先要得到容器。

            2. 存对象

                   a. 创建 Bean(普通类)。

                   b. 将 Bean 注册(配置)到 spring-confing.xml 中。

            3. 取对象

                   a. 得到 Spring 上下⽂,并读取到 Spring 的配置⽂件。

                   b. 获取某⼀个 Bean 对象。

                   c. 使⽤ Bean 对象。

            操作流程如下图所示:

            image.gif编辑


            相关文章
            |
            4月前
            |
            人工智能 自然语言处理 安全
            Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
            本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
            49266 72
            Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
            |
            Ubuntu 异构计算 Windows
            ModelScope问题之下载推荐的基础镜像失败如何解决
            ModelScope镜像是指用于在ModelScope平台上创建和管理的容器镜像,这些镜像包含用于模型训练和推理的环境和依赖;本合集将说明如何使用ModelScope镜像以及管理镜像的技巧和注意事项。
            702 0
            |
            前端开发
            【Sa-Token】7、Sa-Token抛出的异常统一处理
            在 Sa-Token 的登录,授权,验证过程中,会抛出很多的异常,我们不能将这些异常信息直接返回给用户,因为用户是看不懂这些异常信息的,我们就需要对这些异常信息进行处理,处理之后再返回展示给前端用户
            2268 0
            |
            10月前
            |
            Web App开发 人工智能 监控
            深入剖析:Playwright MCP Server 的工作机制与性能优化策略
            本文深入解析Playwright MCP Server的三层架构:协议层负责AI指令通信,执行引擎操控浏览器,会话管理层维护状态。重点分享了性能优化方案,包括浏览器实例池化、并行执行和操作序列优化,并提供了确保系统稳定运行的错误处理、超时控制等最佳实践。
            |
            8月前
            |
            监控 数据可视化 Java
            Spring Boot 整合 Elasticsearch 及实战应用
            这次内容详细介绍如何使用 Spring Boot 整合 Elasticsearch,并提供几个实际应用案例。内容涵盖 Elasticsearch 的基本概念、Spring Boot 整合步骤、实战应用示例以及优化建议。
            780 0
            |
            人工智能 缓存 NoSQL
            Redis 与 AI:从缓存到智能搜索的融合之路
            Redis 已从传统缓存系统发展为强大的 AI 支持平台,其向量数据库功能和 RedisAI 模块为核心,支持高维向量存储、相似性搜索及模型服务。文章探讨了 Redis 在实时数据缓存、语义搜索与会话持久化中的应用场景,并通过代码案例展示了与 Spring Boot 的集成方式。总结来看,Redis 结合 AI 技术,为现代应用提供高效、灵活的解决方案。
            |
            存储 NoSQL Java
            Spring boot 整合 Elasticsearch
            前面学习了 Elasticsearch 的简单基本操作,例如安装,基本的操作命令等,今天就来看看 es 和 Spring boot 的简单整合,实现增删改查的功能。众所周知,Spring boot 支持多种 NoSql 数据库,例如 redis、mongodb,elasticsearch 也是其中的一种。并且实现了 Spring boot 一贯的自动化配置,使用起来也是十分方便的。
            1235 0
            Spring boot 整合 Elasticsearch
            |
            缓存 人工智能 API
            【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
            【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
            1814 0
            |
            机器学习/深度学习 人工智能 PyTorch
            Faceswap
            Faceswap
            1112 0