Spring(二):Spring的创建和使用

news2024/11/14 23:39:55

目录

  • 一、创建Spring项目
    • 1.1 创建一个Maven项目
    • 1.2 添加Spring框架支持
    • 1.3 创建启动类
  • 二、使用Spring存储对象
    • 2.1 创建Bean
    • 2.2 将Bean注册到容器
  • 三、获取并使用Bean对象
    • 3.1 创建Spring的上下文
    • 3.2 从Spring上下文对象中取出Bean对象
    • 3.3 使用Bean

一、创建Spring项目

1.1 创建一个Maven项目

(1)
在这里插入图片描述
(2)在这里插入图片描述

1.2 添加Spring框架支持

在pox.xml中添加的框架有 spring-context: spring 上下文,还有 spring-beans:管理对象的模块。这两个框架都能在Maven中央仓库种找到

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>spring-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
    </dependencies>
</project>

1.3 创建启动类

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

在这里插入图片描述

二、使用Spring存储对象

存储Bean分为2步:

  1. 存储Bean的前提是得先有Bean,因此我们要先创建一个Bean
  2. 将创建好的Bean注册到Spring中

2.1 创建Bean

Bean就是Java中的一个普通的对象
在这里插入图片描述

2.2 将Bean注册到容器

在创建好的项目中添加 Spring 配置文件 spring.xml,将此文件放到 resources 的根目录下,如下图所示:
在这里插入图片描述
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>

然后将User对象注册到Spring中,在spring.xml(这个文件名是自定义的)中通过bean标签(bean标签要放到beans标签中)将User注册到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>
        <bean id="user" class="com.bit.User"></bean>
    </beans>

</beans>

三、获取并使用Bean对象

获取并使用Bean对象分为以下三步:

  1. 得到Spring上下文对象,由于我们将对象交给Spring管理了,所以获取对象要从 Spring 中获取,那么就得先得到 Spring 的上下文。
  2. 通过Spring上下文,获取指定的Bean对象
  3. 使用Bean对象

3.1 创建Spring的上下文

创建Spring的上下文有两种方式:

  1. 使用ApplicationContext类(来自于Spring)
  2. 使用BeanFactory类

(1)使用ApplicationContext,获取Spring上下文对象

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {

        //参数中传的是spring的配置文件名称
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring.xml");
    }
}

(2)使用BeanFactory获取上下文对象

BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("springconfig.xml"));

【ApplicationContext 和 BeanFactory的区别】

  • 继承关系和功能来说:Spring容器有两个顶级的接口,BeanFactory和ApplicationContext,其中ApplicationContext是BeanFatory的子类,BeanFactory提供了基础的访问容器的能力,ApplicationContext除了继承了BeanFactory的所有功能之外,还拥有独特的特性,还添加了国际化支持、资源访问支持、以及事件传播等方面的支持
  • 从性能方面来说:ApplicationContext是一次性加载并初始化所有的Bean对象,而BeanFactory是需要哪个才去加载哪个,因此更轻量
  • ClassPathXmlApplicationContext是ApplicationContext的子类,拥有ApplicationContext的所有功能,通过xml的配置来获取所有的Bean容器

3.2 从Spring上下文对象中取出Bean对象

    ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring.xml");

        User user=(User)applicationContext.getBean("user");//传的参数是对应bean标签中的id属性的值

【getBean的其他用法】

  • 根据类型获取Bean,这种方法有个弊端,就是当Spring中有多个User对象时,Spring就不知道你要取哪个Bean对象 在这里插入图片描述
  • 根据名称+类型获取在这里插入图片描述

3.3 使用Bean

  public static void main(String[] args) {

        //参数中传的是spring的配置文件名称
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring.xml");

        User user=(User)applicationContext.getBean("user");//传的参数是对应bean标签中的id属性的值
          user.method();
    }

运行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/97427.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

传统数据治理的常见陷阱有哪些?

一、传统的数据治理 传统的数据治理是一种数据优先的治理方法。这种传统方法缺乏响应数据用户需求的流动性——或者在新法规出现时适应新法规的灵活性。传统方法概述角色、创建数据标准、分配责任并创建公司范围的数据策略。因为它强调对数据的控制&#xff0c;这种方法威胁工…

Java程序接入ChatGPT

Java程序接入ChatGPT0 前言1 还想体验的小伙伴可以试试2 Java接入前准备3 官方支持接入语言4 调用费用5 接口调用说明6 代码实现6.1 postman调用6.2 Java调用7 小结0 前言 之前文章中我们聊过怎么注册使用最近很火的ChatGPT&#xff1f;这期我们来看看怎么在Java中调用ChatGPT…

openssl aes加密例子

openssl OpenSSL 是一个安全套接字层密码库&#xff0c;囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议&#xff0c;并提供丰富的应用程序供测试或其它目的使用。 首先&#xff0c;要安装 openssl: centos命令: sudo yum install openssl-devel ubuntu命令&#x…

重学webpack系列(一) -- 前端模块化的演变历史

前言 任何事物的产生都有他的必然性&#xff0c;就像是冥冥之中注定了一样&#xff0c;在JavaScript刀耕火种的时代&#xff0c;前端是被定义为切图的一项工作&#xff0c;页面逻辑与交互全部由服务端工程师完成&#xff0c;前端开发几乎不受服务端开发重视&#xff0c;那时候…

免费教你如何设计商品主图,手把手教学!

好看的电商主图都是怎么设计出来的&#xff1f;有什么办法能快速设计出爆款的同款商品主图吗&#xff1f;跟着小编的教学步骤&#xff0c;教你轻松在线设计&#xff0c;不需要任何门槛也能掌握的电商设计工具&#xff0c;轻松搞定各种类型的商品主图&#xff0c;下面跟着小编的…

Spring BOOT 手写一个starter并使用这个starter

1、stater工程的命名 starter 是一个开箱即用的组件&#xff0c;减少不必要的重复代码&#xff0c;重复配置。例如&#xff0c;在mavne项目进行配置的时候&#xff0c;我们需要引用 spring-boot-starter-parent。 Spring 官方定义的 starter 通常命名遵循的格式为 spring-bo…

Linux——日志管理

基本介绍 日志文件是重要的系统信息文件&#xff0c;其中记录了许多重要的系统事件&#xff0c;包括信息的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等&#xff1b;日志对于安全来说也很重要&#xff0c;它记录了系统每天发生的各种事情&…

ASP.NET Core —选项系统

ASP.NET Core — 选项系统1. 选项2. 选项配置方式2.1 手动绑定2.2 依赖注入配置2.2.1 配置文件节点转换选项2.2.1 硬编码配置选项2.2.3 使用DI服务配置选项2.2.4 命名选项2.2.4 后期配置3. 使用3.1 IOptions<TOptions>3.2 IOptionsMonitor<TOptions>3.3 IOptionsSn…

零基础小白:为什么要学习编程?如何入门编程?!

这篇文章回答以下几个问题&#xff1a; ★我们为什么要学习编程&#xff1f; ★非计算机学生&#xff0c;如何对编程产生兴趣&#xff1f; ★零基础&#xff0c;如何入门编程&#xff1f; 第一个问题&#xff1a;我们为什么要学习编程&#xff1f; 如果说和编程有关的最经常收…

QT mysql 数据库的使用

1.首先我是用的是 网上的免费的mysql 数据库 &#xff0c; 1.申请步骤 2.链接 &#xff1a;SQLPub - 免费的MySQL数据库 2..测试数据库是否可以使用 头文件&#xff1a; #include <QSqlDatabase>//数据库 #include <QDebug>//输出 #include <QStringList&g…

【原创】Unity结合OpenAI官方api实现类似chatGPT的AI聊天机器人

一、什么是ChatGPT 最近chatGPT爆火&#xff0c;网络铺天盖地的各种文章视频&#xff0c;各种牛逼之声。倒算不上第一时间使用&#xff0c;发布隔了一周多&#xff0c;才从同事那里听说了这么个神奇的技术。这周阳了&#xff0c;持续发烧在家&#xff0c;忙着养病也没时间去了解…

[oeasy]python0030_设置路径_export_PATH_zsh_系统路径设置_export

放入路径 回忆上次内容 我们要在任意路径下直接执行 sleep.py 把 sleep.py 放在 /usr/bin/ 下面最终可以在任意位置执行程序sleep.py 但是 /usr/bin 里面放的一般都是二进制命令文件命令实在是太多太乱最终还是删除了sleep.py 我想 把宿主目录添加到系统变量 $PATH 中这样有可…

winform中使用SqlSugar和SQLite

winform虽然是老古董了&#xff0c;但是在开发桌面方面&#xff0c;还是得心应手的&#xff0c;比如开发一个小工具&#xff0c;小demo之类的。接下来&#xff0c;我们使用SqlSugar和SQLite数据库&#xff0c;在winform中运用。 1.首先建立一个程序 2.安装 System.Data.SQLite…

宿舍管理系统的设计与实现

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 1登录&#xff1a;学生进行用户登陆密码核对&#xff0c;并可对自己的信息进行修改。 2.宿舍水电费管理&#xff1a;学生…

CloudCompare配置介绍

和前面系列博客一样&#xff0c;咱们还是从官网介绍先去了解新东西。官网网址如下&#xff1a; CloudCompare - Open Source project 顶部菜单中提供了下载&#xff0c;手册查找入口&#xff0c;github路径如下&#xff1a; GitHub - CloudCompare/CloudCompare: CloudCompar…

想辞职转行做程序员,需要学习哪些内容?

第一步&#xff0c;还是要明确具体的职业方向。 程序员是个统称&#xff0c;写代码的都叫程序员&#xff0c;但Java程序员&#xff0c;或是Python程序员&#xff0c;这才是职业。就好像很多大学生&#xff0c;专业是软件工程&#xff0c;这玩意儿并不是职业&#xff0c;学的内…

工作3年才8K,新招的测试一来就是14K,凭什么?

最近朋友给我分享了一个他公司发生的事&#xff0c;大概的内容呢&#xff1a;公司一位工作3年的测试工资还没有新人高&#xff0c;对此怨气不小&#xff0c;她来公司辛辛苦苦三年&#xff0c;三年内迟到次数都不超过5次&#xff0c;每天都是按时上下班&#xff0c;工作也按量完…

5_MyBatis代理模式开发-1_使用Mapper代理方式实现查询

前面已经使用MyBatis完成了对Emp表的CRUD操作&#xff0c;都是由SqlSession调用自身方法发送SQL命令并得到结果的&#xff0c;实现了MyBatis的入门。 但是却存在如下缺点&#xff1a; 1. 不管是selectList()、selectOne()、selectMap()&#xff0c;都是通过SQLSession对象…

SAP Gateway 上的 Metadata Cache

SAP Gateway Foundation 缓存服务的元数据信息以显着提高性能。 SAP 提供了三种类型的缓存&#xff1a; 在 hub 上缓存。 在 Hub 系统上缓存了元数据模型、注释模型以及服务的注释文本。 在后端缓存。 在后端仅缓存元数据模型和注释模型。 后端不需要注释文本来进行服务实例…

ubuntu开启TFPT

一、开启tfpt&#xff1a; sudo apt-get install vsftpd 对 vsftpd 进行配置&#xff0c;输入命令&#xff1a; sudo gedit /etc/vsftpd.conf 主要做以下修改&#xff0c;使以下设置生效&#xff1a; anonymous_enableNO local_enableYES write_enableYES 重新启动 vsftpd 服务…