【Spring 项目的创建和使用】

🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!

欢迎志同道合的朋友一起加油喔🤺🤺🤺


目录

1. 创建 Spring 项目

2. 创建一个 普通 Maven 项目

3. 添加Spring框架支持

4. 添加启动类

5. 存储Bean对象

5.1 添加配置文件

5.2 创建Bean对象

5.3 注册Bean

6. 获取并使用Bean对象

1. 先获取Spring上下文对象

ApplicationContext 和 BeanFactory 的区别?(经典面试题)⭐⭐⭐

2. 获取 Bean(根据上下文对象提供的 getBean 方法)

(1) 通过 Bean id 来获取

(2) 通过类型来获取

(3) 通过 id + 类型来获取  (推荐写法)

7. 总结 Spring 的创建和使用



引言:

学习过上篇文章初识Spring后,我们知道Spring 就是⼀个包含了众多⼯具方法的 IoC 容器。它具备两个最核心的功能:将对象(Bean)存储到容器(Spring)中;从容器(Spring)中将对象(Bean)取出来。

1. 创建 Spring 项目

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

  1. 创建⼀个普通 Maven 项⽬
  2. 添加 Spring 框架⽀持(添加 spring-context 依赖 )
  3. 创建一个启动类并添加main(作用: 为后面从 Spring 容器中获取 bean 做准备)

2. 创建一个 普通 Maven 项目

依次点击File→New→Project,选择左侧的Maven项目,点击Next,然后填写项目名称,点击Finish,至此一个maven项目就创建好了,这里和前面servlet的创建maven项目是一样的,

不懂可以参考【Servlet 基础】,配置国内源可以参考【将maven源改为国内阿里云镜像】

创建好后配置一下国内源(就是常说的镜像Maven),这样的话就不会到国外仓库去下载依赖,他会在国内下载,下载更快而且不容易出错;如果我们是在国外仓库下载的话网不好就会很慢,而且还很容易出错(如果你有一次没下好,那么后面再下的时候,他就会以为你下过这个依赖了,就不下了,其实你下的依赖是残缺的,根本运行不了)

3. 添加Spring框架支持

大家可以去中央仓库拉取, 也可以直接复制下面代码粘贴到 Spring 项目中 pom.xml 下 <dependency></dependency> 标签中.

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

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

</dependencies>

【注意事项】

我们在添加完依赖时, 一定要切记点击 IDEA 右边 maven 的 Reload,  如果 IDEA 项目中出现下图中相关依赖信息, 则表示添加依赖成功了.

4. 添加启动类

在java文件夹下,创建一个启动类,包含main方法

5. 存储Bean对象

5.1 添加配置文件

第一次添加需要在项目中添加Spring配置文件 (只需要第一次添加即可)

resources目录下创建一个spring-config.xml(此文件名可以为别的,建议为spring-config)

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

 5.2 创建Bean对象

Bean对象就是Java中普通的对象,这里我们创建一个Student类

5.3 注册Bean

将创建好的Bean对象通过配置文件注册到Spring中

beans>
  <bean id="student" class="beans.Student"></bean>
</beans>

1. 一个这样的 bean 标签, 就表示我们要将一个 bean 对象托管到 Spring 中.

2. 此处的 id 就相当于寄快递时填写的电话号码, 因为我可能要托管多个 bean 对象到  Spring 中, 当我去获取对象的时候, 就需要根据这个 id 来取; 然后 class 就相当于是寄包裹时填写的地址. 

id : 标识, 取对象 (bean) 使用        class : 存储 bean 位置 (包名 + 类名 -> 定义到唯一对象)

3. id 的名字可以随便取, 此处是为了词达意, 你取zhangsan, lisi 都没关系, 只是合法不合理.

经过以上操作, 我的 bean 对象是否已经存储到 Spring 中了呢 ?

其实并没有, 上述操作只是声明了我要存储对象到 Spring 当中. 当程序正儿八经的执行的时候, Spring 采用的是懒加载(单例模式中的懒汉模式), 在启动 Spring 项目的时候, 它不会立即的去将 bean 存储到 Spring 中, 这是它实现上的一个策略, 这也是广义上和狭义上的一个区别, 就类似于并发和并行两者之间的区别一样, 初学的时候, 站在广义的角度上便于理解.

6. 获取并使用Bean对象

使用Spring上下文的方式获取Bean对象

  1. 先获取Spring上下文对象
  2. 再通过上下文对象提供的方法获取指定的Bean对象

1. 先获取Spring上下文对象

public class App {
    public static void main(String[] args) {
        //1,得到Spring
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        //2.从spring容器中获取 Bean 对象 ,此处的"student" 必须和spring-config.xml配置中的Bean的id保持一致
        //getBean的返回类型为Object,所以强转一下
        Student student =(Student) context.getBean("student"); //该行代码就是实现IOC思想的DI操作
        //3.使用Bean对象(非必须,也可以获取不用)
        student.sayHi();
    }
}

 除了这种方法可以拿到 Spring 上下文对象之外, 我们还可以使用 BeanFactory 来作为 Spring 上下文对象. 使用 ApplicationContext 或者 BeanFactory 来获取 Spring 上下文对象, 是同样的效果, 只不过 ApplicaitonContext 是 BeanFactory 的一个子类.

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

ApplicationContext 和 BeanFactory 的区别?(经典面试题)⭐⭐⭐

相同点: 都可以实现从容器中获取bean,都提供了getBean的方法。
不同点:

  1. ApplicationContext属于BeanFactory的子类。BeanFactory只提供了基础访问Bean的方法,
    ApplicationContext除了拥有BeanFactory的所有功能之外,还提供了更的方法实现,比如对国际化的支持、资源访问的支持、以及事件和传播等方面的支持。
  2. 从性能方面来说二者是不同,BeanFactory 是按需加载Bean(懒汉方式), ApplicationContext 是饿汉方式,在创建时会将所有的Bean都加载起来,以备以后使用。

2. 获取 Bean(根据上下文对象提供的 getBean 方法)

(1) 通过 Bean id 来获取

//根据上下文提供的方法获取bean对象
Student student =(Student) context.getBean("student"); 

(2) 通过类型来获取

//通过类型获取bean对象
Student student =context.getBean(Student.class);

虽然写法简单,但是容易出问题,当同一个类型被注入 Spring 中多次(多个)的时候,就会报错

(3) 通过 id + 类型来获取  (推荐写法)

这种是最安全的写法,不会出现像上面那种情况,但是id要对应上😊

//通过id+类型获取bean对象
Student student =context.getBean("student",Student.class);

此种方式是为了解决使用class获取bean时存在多个相同类型的bean对象,此时加上id(因为id的唯一性)就可以获取唯一的bean对象,当相同的类多次注入到spring容器中时,此时多个相同类型的bean对象各不相同(每个bean都有其唯一的地址)

7. 总结 Spring 的创建和使用

1. 创建 Spring 项目, 相当于得到容器.

  • 创建⼀个普通 Maven 项⽬
  • 添加 Spring 框架⽀持(添加 spring-context 依赖 )
  • 创建一个启动类并添加main(作用: 为后面从 Spring 容器中获取 bean 做准备)

2. 存储 bean 对象

  • 创建 bean
  • 将 bean 对象注册到 Spring 配置文件中 (spring-config.xml)

3. 读取 bean 对象

  • 拿到 Spring 上下文 对象 
  • 通过 Spring 对象 getBean 方法 获取到 bean 对象 【 DI 操作】
  • 使用 bean 对象 (非必须)

基本流程图: 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring项目创建可以通过使用IntelliJ IDEA等开发工具来完成。首先,你需要在IDEA中创建一个新的项目。在创建项目的过程中,你可以选择使用Spring Initializr来生成一个基本的Spring项目结构。这个工具可以帮助你快速创建一个包含必要依赖和配置的Spring项目。 在创建项目后,你可以在项目的配置文件中定义和配置Spring的相关组件和功能。通常,Spring项目的配置文件是一个XML文件,其中包含了Spring容器的配置信息。你可以使用<beans>元素来定义Spring的bean对象和它们之间的依赖关系。例如,你可以使用<bean>元素来定义一个类的实例,并指定它的属性值和依赖关系。 在项目使用Spring的bean对象时,你可以通过Spring容器来获取它们的实例。Spring容器会负责创建和管理这些对象,你只需要在需要使用它们的地方通过容器获取即可。你可以使用ApplicationContext接口来获取Spring容器的实例,并使用getBean()方法来获取具体的bean对象。 总结起来,创建一个Spring项目包括以下几个步骤: 1. 使用开发工具创建一个新的项目,可以选择使用Spring Initializr来生成基本的项目结构。 2. 在项目的配置文件中定义和配置Spring的相关组件和功能,通常使用XML格式的配置文件。 3. 使用Spring容器来获取和管理bean对象的实例,可以通过ApplicationContext接口来获取容器实例,并使用getBean()方法来获取具体的bean对象。 希望这个回答对你有帮助!\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [Spring入门(一):创建Spring项目](https://blog.csdn.net/LIU18612105538/article/details/101644076)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [spring项目创建](https://blog.csdn.net/xhhhx_/article/details/125548279)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书生-w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值