初始Spring框架

前言

        Spring是当今企业最常见最常使用的框架。我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级的应⽤程序开发起来更简单。

        在官方网站里介绍到何为Spring:

 好像还是有点晦涩难懂,可以用更简单的一句话来概括:Spring就是包含了众多工具方法的IoC容器。

Ioc是啥?容器又是啥?

1.容器的含义

        容器就是容纳很多物品的装置,就好比List/Map 都是容器。

2.Ioc的含义

        IoC:Inversion of Control 翻译过来就是控制权翻转,字面意思就是将某个对象或者是物品把他控制权翻转过去~~

        依旧是晦涩难懂的定义,我们用以下代码案例来理解一下:

我们要造一个Car类 来模拟造一个“车”,有一个Car类就需要一个Framework类,而Framework类又需要Bottom类,而Bottom类又依赖一个Tire类.

我们可以看到每个类除了Tire类之外都有一个类需要依赖,比如说在car类里 创建了或者说是new了一个Framework对象,也就是说Framework这个创建和销毁都掌握在了Car类的手上,而且还要注意的是Tire改变size的时候,就在所有类都需要进行修改~~

而IoC就是

 而类创建的顺序从 Car->Tire 变成了Tire->Car 相比较平常的代码IoC的优点是:1.解耦合 2.控制权反转~~

 3.理解Spring IoC

        Ioc是思想 SpringIoC是一种框架。

既然 Spring 是⼀个 IoC(控制反转)容器,重点还在“容器”⼆字上,那么它就具备两个最基础的功能:
将对象存⼊到容器;
从容器中取出对象。
也就是说学 Spring 最核⼼的功能,就是学如何将对象存⼊到 Spring 中,再从 Spring 中获取对象的过程

 3.1Spring IoC的优点

        1.解耦

        2.使用更加方便了 不需要关注背后的依赖关系,就不受束缚进行操作了

        3.更加高效 不需要多次new对象了~~

Spring 是⼀个 IoC 容器,说的是对象的创建和销毁的权利都交给 Spring 来管理了,它本身⼜具备了存储对象和获取对象的能⼒

4.DI

        DI:依赖注入        依赖注入:当在框架运行的时候,动态的将依赖的某个对象注入到当前这个类中。DI和IoC其实说的是一件事,只是看待的事物的角度不同

所谓依赖注⼊,就是由 IoC 容器在运⾏期间,动态地将某种依赖关系注⼊到对象之中。所以,依赖注⼊(DI)和控制反转(IoC)是从不同的⻆度的描述的同⼀件事情,就是指通过引⼊ IoC 容器,利⽤依赖关系注⼊的⽅式,实现对象之间的解耦。
IoC 是“⽬标”也是⼀种思想,⽽⽬标和思想只是⼀种指导原则,最终还是要有可⾏的落地⽅案,⽽ DI就属于具体的实现。

        

1.Spring 创建和使用

        1.1Spring项目创建

                1.1.1先创建一个Maven项目

                 1.1.2添加spring-context依赖

在Maven官网找到spring context 然后在pom.xml文件中输入以下代码:

 而在加载之前还需要改成国内的镜像网站,因为网络的不稳定可能jar包会下不全。

 在setting.xml中修改以下内容

        1.1.3 创建启动类

说是启动类就是psvm啦很简单 

2.Spring存储Bean对象

        2.1先创建一个Bean(在Java一个对象被多处使用,就可以称之为Bean)

        

         2.2将Bean存储到Spring容器中

在resources下创建一个xml文件 然后将以下代码拷贝进去 

<?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 http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
</beans>

 存储的时候,就是在xml内 加一个bean标签 id 是自己定义的名字,class变成类名

 以上操作就完成了存储Bean对象~~

3.Spring读取Bean对象

        如果想要读取Bean对象就要先获得Spring对象,而想要获取Bean对象常用的俩个方法一个是ApplicationContext  另一个是BeanFactory。

 //得到 Spring 的上下⽂对象,创建的时候需要配置 Spring 配置信息
ApplicationContext context = new ClassPathXmlApplicationContext("spring-con
fig.xml");
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("springconfig.xml"));


  以下案例展示一下读取Bean对象:


 

 获取到Spring对象之后通过getBean方法获取到Bean对象 getBean方法有三种传参方式:

1.传名称,但是前面要强转

2.传类名,但会出现在Spring内一个类有多个Bean对象

3.名称,类名都传 -> 最常用的

ApplicationContext VS BeanFactory(常见面试题)

● 继承关系和功能方面来说:Spring 容器有两个顶级的接口:BeanFactory 和 ApplicationContext。其中 BeanFactory 提供了基础的访问容器的能力,而 ApplicationContext 属于 BeanFactory 的子类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性,还添加了对国际化支持、资源访问支持、以及事件传播等方面的支持。

● 从性能方面来说:ApplicationContext 是一次性加载并初始化所有的 Bean 对象,而 BeanFactory 是需要那个才去加载那个,因此更加轻量。

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

关于Bean对象存取详情请见图文并茂,揭秘 Spring 的 Bean 的加载过程 - 简书 (jianshu.com) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值