【Spring 项目的创建和使用】

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

欢迎志同道合的朋友一起加油喔【Spring 项目的创建和使用】_第1张图片


目录

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 下 标签中.

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


    
    
        org.springframework
        spring-context
        5.3.27
    


【注意事项】

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

【Spring 项目的创建和使用】_第2张图片

4. 添加启动类

在java文件夹下,创建一个启动类,包含main方法【Spring 项目的创建和使用】_第3张图片

5. 存储Bean对象

5.1 添加配置文件

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

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

【Spring 项目的创建和使用】_第4张图片




 5.2 创建Bean对象

Bean对象就是Java中普通的对象,这里我们创建一个Student类【Spring 项目的创建和使用】_第5张图片

5.3 注册Bean

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

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

【Spring 项目的创建和使用】_第6张图片

(2) 通过类型来获取

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

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

【Spring 项目的创建和使用】_第7张图片

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

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

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

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

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 对象 (非必须)

基本流程图: 【Spring 项目的创建和使用】_第9张图片

你可能感兴趣的:(前端)