Spring的创建和使用

简介: 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的配置如下:

<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方法即可:

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

存储Bean对象

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

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

1. 创建Bean

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

public class User {
    public String sayHi(String name){
        return  name+"你好!";
    }
}

2.将Bean注册到容器当中

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

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

配置文件gitee地址

<?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中去

<bean id="user" class="User"></bean>

获取并使用Bean对象

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

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

1.得到Spring上下文

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

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

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

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对象

//获取指定的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对象

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对象


相关文章
|
小程序 开发者
HBuilderX运行uniapp到微信开发者工具常见报错
HBuilderX运行uniapp到微信开发者工具常见报错
3218 0
|
存储 移动开发 前端开发
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
257 0
|
机器学习/深度学习 自然语言处理 算法
通义灵码在金融与教育领域的应用
通义灵码在金融与教育领域的应用展现了其强大潜力。在金融行业,它通过优化风险评估、智能投顾及交易算法,提升业务效率与安全性;在教育领域,则通过个性化学习方案、智能化教学资源生成及编程教育辅助,革新教学方式,满足多样化需求,为行业注入新活力。
|
12月前
|
JSON 测试技术 API
大模型工程师基础之学会使用openai
本系列教程涵盖OpenAI API基础到高级应用,包括文本生成、图像处理、语音交互、会话管理、流式响应、文件输入、推理模型及性能评估等十大核心功能。适合新手入门与工程师实践,助您掌握大模型开发关键技术。从简单Prompt设计到复杂多模态任务,逐步深入,结合实例代码与最佳实践,提升实际开发能力。希望这些内容对您有帮助!
1825 11
|
负载均衡 Dubbo Java
理解 Netty 和 Dubbo 之间的关系:相互作用与作用域
在现代分布式系统和微服务架构中,高性能、高可用的通信框架是成功的关键要素之一。Netty 和 Dubbo 是两个非常流行的开源项目,它们在分布式系统的构建中发挥着重要作用。
|
人工智能 Linux iOS开发
AI超强语音转文本SenseVoice,本地化部署教程!
【9月更文挑战第7天】以下是AI超强语音转文本工具SenseVoice的本地化部署教程:首先确保服务器或计算机满足硬件和软件要求,包括处理器性能、内存及操作系统等。接着从官网下载适合的安装包,并按操作系统进行安装。配置音频输入设备和语言模型后,启动SenseVoice并测试其语音转文本功能。最后根据实际使用情况进行优化调整,并定期更新以获取最新功能。详细步骤需参照官方文档。
6026 1
|
存储 JavaScript 前端开发
Vue 3 Composition API:让组件开发更高效、灵活(下)
Vue 3 Composition API:让组件开发更高效、灵活(下)
Vue 3 Composition API:让组件开发更高效、灵活(下)
|
Java
java基础(1)逻辑控制if、switch
本文继续介绍了Java中的基础逻辑控制语句,包括if-else语句和switch语句。文章通过示例代码展示了if-else语句如何根据条件判断执行不同的代码块,以及switch语句如何根据变量的值执行不同的case分支。还提供了一个使用Scanner类从键盘获取输入,并根据输入的数字输出对应的星期日的示例。最后提到了如何在IDEA中格式化代码。
184 2
|
消息中间件 存储 缓存
【多线程系列-01】深入理解进程、线程和CPU之间的关系
【多线程系列-01】深入理解进程、线程和CPU之间的关系
34781 14
|
Java 数据库连接 Apache
SpringBoot整合CXF实现WebService
SpringBoot整合CXF实现WebService
1010 0