Spring 创建和使用

这篇具有很好参考价值的文章主要介绍了Spring 创建和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Spring 是一个包含了众多工具方法的 IoC 容器 , 既然是容器那么一定具备两个最基本的功能:
  • 将对象存储到容器(Spring) 中;
  • 从容器中将对象取出来.

什么是 Bean ?

在 Java 中对象也叫 Bean , 所以以后遇到对象就以 Bean 著称

初学 java 时我们都知道 , java 的图标是一杯咖啡 , 那么 bean 就可以当做咖啡豆.

bean 是一种特殊的 可重用的类 , 具有以下特征:

  • 提供一个无参构造函数
  • 需要被序列化且实现了 Serializable 接口
  • 有一系列可读属性 , 且一般是 private 的.
  • 有一系列的 Setter 和 getter 方法.

可以想象有一个箱子 , 内部被分成好几部分 , 每一部分存放指定的物品 , 工人可以从箱子中取出物品 , 也可以放入物品后封箱发送快递 , 其中 箱子就可以看做是 bean , 存取操作就是 Getter 和 Setter , 物品就是属性 , 封箱发送就是序列化和传输.

Spring 创建和使用

1. 创建 Spring 项目

接下来使用 Maven 来创建一个 Spring 项目 , 大致流程和创建 Servlet 类似 , 总共分为以下三步:

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

1.创建一个 Maven 项目

选择 Maven 之后直接点击 next 即可.

Spring 创建和使用

配置好路径之后直接点击 Finsh 即可.

Spring 创建和使用

文件显示如下图所示则初始化完毕

Spring 创建和使用

2. 添加 Spring 依赖

1.配置 Maven 国内源

添加 Spring 依赖 , 为了保证项目可以方面的下载 , 我们需要配置Maven 国内源.

但 IDE 有个很反人类的操作 , 我们需要配置两次 seting (一个是当前配置文件 , 一个是新项目的配置文件)

当前配置文件:

Spring 创建和使用

新配置文件:

Spring 创建和使用

配置文件只需打两个对钩 , 最下面的对钩不选.

Spring 创建和使用

通过复制 User seting file 路径找到settings.xml , 如果没有settings.xml . 可以直接下载我分享的配置.

settings.xml

Spring 创建和使用

用 vscode 或 notepad++ , 打开该文件 , 找到 mirrors , 添加阿里的国内源.

   <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>        
      </mirror>

Spring 创建和使用

重新下载 jar 包

点击Maven中的Reload.

Spring 创建和使用

继续配置 新配置文件 中的 Maven , 步骤与上述一致.

2.添加 Maven 依赖

Maven Repository: spring (mvnrepository.com)

在 Maven 仓库中找到 spring.

Spring 创建和使用

最好使用 5.xxx 的版本 , 因为 6.xx 版本对 jdk 的最低要求是 17.

Spring 创建和使用

在 pom.xml 中引入 spring 依赖 , 并记得 Reload.

Spring 创建和使用

如果出现如下目录代表下载完毕.

Spring 创建和使用

3.添加启动项

启动类是为之后操作 spring 做准备的.

Spring 创建和使用


2.存储Bean对象

存储 Bean 分为以下 2 步:

  1. 创建一个Bean (在 java 中一个对象如果被使用多次 , 就可以称之为 Bean)
  2. 将创建的 Bean 注册到 Spring 容器中.

1.创建 Bean

public class Student {
    private void sayHi(){
        System.out.println("hi student");
        
    }
}

2.注册 Bean

在创建好的项目中添加 Spring 配置文件 spring-config.xml , 将此文件放到 resources 的根目录下.

Spring 创建和使用

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"
       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>

最后再将 Student 对象注册到 Spring 中即可 , 具体操作是在 中添加如下配置:

Spring 创建和使用

3.获取并使用 Bean 对象

从 Spring 容器中读取到 Bean

  1. 得到 Spring (上下文)对象 , 因为对象都交给 Spring 管理了 , 所以获取对象要从 Spring 中获取 , 那么就需先得到 Spring 的上下文.
  2. 通过 Spring 上下文 , 获取到一个指定的 Bean 对象
  3. 使用 Bean 对象.
1. 得到 Spring 对象
常见方式有两种:
ApplicationContext context = 
  new ClassPathXmlApplicationContext("spring-config.xml"); 
BeanFactory beanFactory = 
  new XmlBeanFactory(new ClassPathResource("spring-config.xml"));

ApplicationContext 与 BeanFactory 获取对象的效果是一样的 , 只不过 Application 是 BeanFactory 的子类 , 它们的区别如下:

Spring 创建和使用

  • 在继承和功能方面: Spring 容器有两个顶级的接口: BeanFactory 和 ApplicationContext , 其中 BeanFactoty 提供最基础的访问容器的功能 ,

    而 ApplicationContext 除了继承 BeanFactory 所以功能之外 , 还添加了对国际化支持 , 资源访问 , 以及事件传播等方面的支持.

  • 从性能方面来讲: ApplicationContext 会一次性加载并初始化所有的 Bean 对象(饿汉模式) , 而 BeanFactory 则是需要哪个才去加载哪个 , 因此更加轻量.

ClassPathXmlApplicationContext 属于 ApplicationContext 的子类 , 拥有 ApplicationContext 的所有功能 , 是通过 xml 的配置来获取所有的 Bean 容器.

Spring 创建和使用

2. 获取 Bean 对象
Bean 的三种获取方式
  1. 根据名称
Student student = (Student) beanFactory.getBean("student");

Tips: Bean 的 Id 要一一对应.

Spring 创建和使用

  1. 根据类名
Student student = context.getBean(Student.class);

根据类名获取 Bean 对象看似简单 , 但如果 Spring 中一个类型存储了多个实例 , 那么使用类型获取 Bean 就会报错.

Spring 创建和使用

Spring 创建和使用

  1. 根据类型和名称一起获取
Student student  = context.getBean("student", Student.class);

第三种方式看似与第一种相似 , 但第一种相对更加暴力 , 如果通过类名找不到 Bean , 依然坚持强制类型转换 , 就会空指针异常. 而第三种方式更加优雅.

3.使用 Bean 对象
代码示例:

spring-config.xml 中注册的 bean 并如下:

    <bean id="stu" class="com.spring.demo.Student"></bean>

    <bean id="student" class="com.spring.demo.Student"></bean>

    <bean id="teacher" class="com.spring.demo.Teacher"></bean>

Student 类中代码:

public class Student {
    public Student(){
        System.out.println("do student init");
    }
    public void sayHi(){
        System.out.println("hi student");

    }
}

Teacher 类中的代码:

public class Teacher {
    public Teacher(){
        System.out.println("do teacher init");
    }
    public void sayHi(){
        System.out.println("hi teacher");
    }
}

通过 ApplicationContext 获取 Spring 对象 , 并使用 bean 对象.

public class App {
    public static void main(String[] args) {
        //1.得到 Spring 上下文对象
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");
        //2. Spring 容器中获取到 bean 对象
        Student student  = context.getBean("student", Student.class);
        //3.使用 Bean 对象
        student.sayHi();
    }
}

通过运行结果可以看出 , ApplicationContext 会初始化容器中所有 Bean 对象.

Spring 创建和使用

通过 BeanFactory 获取 Spring 对象 , 并使用 bean 对象

public class App2 {
    public static void main(String[] args) {
        // 1.得到 Spring 上下文对象
        BeanFactory beanFactory =
                new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
        //2. 从 Spring 容器中获取 bean 对象
        Student student = (Student) beanFactory.getBean("student");
        //3. 使用 Bean
        student.sayHi();
    }
}

通过运行结果可以看出 , BeanFactory 只有调用 getBean 才会加载对应的 Bean对象.

Spring 创建和使用

类型相同的 bean 对象 , 实例化一样吗?
public class App {
    public static void main(String[] args) {
        //1.得到 Spring 上下文对象
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");
        //2. Spring 容器中获取到 bean 对象
        Student student  = context.getBean("student", Student.class);
        Student stu = context.getBean("stu", Student.class);

        System.out.println("student == stu -->" + (student == stu));
    }
}

通过运行结果 , 我们可以得知 , 每一个存储在 Spring 中的bean , Spring 都会单独的为它们创建一个 bean 对象 , 不会因为类型相同就使用同一个对象.

Spring 创建和使用

总结

Spring 的操作流程如下:

Spring 创建和使用文章来源地址https://www.toymoban.com/news/detail-434098.html

到了这里,关于Spring 创建和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手把手教你在Vivado创建一个RAM的IP核并使用ILA工具验证

    RAM的英文全称是Random Access Memory,即随机存取存储器,它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度是由时钟频率决定的。RAM主要用来存放程序及程序执行过程中产生的中间数据、运算结果等。 单端口:只有一个端口,

    2024年01月25日
    浏览(41)
  • Java-创建一个名为Student的类,包含姓名、学号、成绩属性,并且提供计算平均成绩的方法,可以查看所有属性和属性值。

    编写Java程序:创建一个名为Student的类,包含姓名、学号、成绩属性,并且提供计算平均成绩的方法,可以查看所有属性和属性值。 运行结果:

    2024年04月11日
    浏览(35)
  • NO.3 robot framework编辑工具RIDE简单使用、RIDE快捷键介绍及创建一个简单的UI自动化测试用例

    一、Ride简单使用及快捷键 1.启动ride 启动ride方法: 1) 通过界面图标 2) dos命令行:进入dos窗口,输入ride.py,按回车即可 2.创建新工程 快捷键:ctrl+n 3.创建测试套(suite)快捷键:ctrl+shift+f 4.保存工程 快捷键:ctrl+shift+s(保存整个工程),ctrl+s(局部保存,只保存鼠标点击的

    2024年01月17日
    浏览(31)
  • 创建并运行一个 Spring Boot 项目

    Spring Boot 是 Spring 框架的脚手架,它存在的目的就是为了快速开发 Spring 框架而诞生的。如何理解 Spring Boot 和 Spring 呢? 如果将 Spring 比喻成农民拿镰刀手动割草,那么 Spring Boot 就相当于专业人员驾驶着割草机,自动割草。而之前的 Servlet 就是普通人,在田地里直接用手拨草

    2024年02月09日
    浏览(38)
  • 【Spring Boot学习】Spring Boot的创建,第一个Spring Boot页面.

    前言: 大家好,我是 良辰丫 ,前面几篇文章,我们系统的学习了Spring框架,今天开始,我们就要学习更高级的SpringBoot框架了,不要着急哦,我们一起畅游SpringBoot框架的世界.💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏:javaEE进阶篇之框架学习 🍎励志语句:生活也许会让我们遍体

    2024年02月08日
    浏览(33)
  • IDEA创建一个spring项目(超详细小白版)

    文章开始的前提是电脑已经安装好IDEA、JDK、Maven,并且环境变量已经配置完毕。 1、打开IDEA,依次点击File、new、project,进入新建项目页面 2、进入新建项目页面,选择Spring Initializr,然后按步骤进行,最后点next,点一下就行,不要手快!!! 3、选择Springboot版本,选 2.7.13 4、选

    2024年02月13日
    浏览(34)
  • 【Spring框架全系列】如何创建一个SpringBoot项目

    🌇哈喽,大家好,我是小浪。前几篇博客我们已经介绍了什么是Spring,以及如何创建一个Spring项目,OK,那么单单掌握Spring是完全不够的,Spring的家族体系十分强大,我们还需要深入学习,以便于我们后续达到能独立做项目的水平。今天我们来学习SpringBoot。🏜 📲目录 一、

    2024年02月03日
    浏览(39)
  • Word处理控件Aspose.Words功能演示:使用 C# 在 Word 文档中创建和修改 VBA 宏

    Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像

    2024年02月03日
    浏览(31)
  • 如何优雅地创建一个自定义的Spring Boot Starter

    优雅永不过时,希望看完本文,你会觉得starter如此优雅! Spring Boot Starter是一种简化Spring Boot应用开发的机制,它可以通过引入一些预定义的依赖和配置,让我们快速地集成某些功能模块,而无需繁琐地编写代码和配置文件。Spring Boot官方提供了很多常用的Starter,例如 spring

    2024年02月11日
    浏览(43)
  • 创建一个微信小程序——如何注册账号,安装微信开发者工具,创建一个小程序(详细步骤版)

    注册地址 注册地址:微信公众平台 注册 右上角——【立即注册】。 选择【小程序】。 按照步骤完成注册。 按照步骤激活邮箱后,在信息登记这里选择个人。 填写相关信息。 完成注册。 这一步可以先保留,后续在创建小程序时会用到AppID——点击【前往小程序】,复制A

    2024年02月06日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包