栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

初识Spring框架

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

初识Spring框架

目录

1、为什么要学框架

2、Servlet vs SpringBoot

2.1 servlet框架步骤

2.2 SpringBoot框架的步骤

2.3 二者比较

3、Spring核心与设计思想

3.1 初识Spring

3.2 什么是IoC?

3.3什么是DI

4、Spring创建与使用

4.1 创建 Spring项目

4.2 存储 Bean 对象

4.3 获取并使用Bean对象

4.3 总结


1、为什么要学框架

学习框架相当于从”小作坊“到”工厂“的升级,小作坊什么都需要自己来完成,而框架就在一定意义上实现了自动化,框架更加易用、简单且高效。

2、Servlet vs SpringBoot

2.1 servlet框架步骤

①首先创建一个maven项目选择webapp

②搜索servlet添加框架到pom.xml中

③添加业务代码、实体类、控制器

④运行项目(借助tomcat)

2.2 SpringBoot框架的步骤

①创建并添加引用

②添加代码并运行程序(用户实体、控制器)

③发布程序

2.3 二者比较

SpringBoot相比于Servlet优点总结:

①添加外部Jar包更容易,不易出错(版本问题无需关注,自动匹配相应的版本)

②调试项目更加方便,无需配置Tomcat

③发布项目更加方便,无需配置Tomcat

④添加路由更加方便,无需每个访问地址都添加一个类,可以一对多。

3、Spring核心与设计思想

3.1 初识Spring

通常所说的Spring就是Spring Framework(Spring框架),用一句话概括Spring:Spring是包含了众多工具方法的IoC容器。

3.2 什么是IoC?

IoC即 Inversion of Control 译为中文为”控制反转“的意思,简单理解就是把程序的控制权反转过来,举一个简单的例子:构建车的过程,构建一辆车,车需要依赖于车身,而车身又依赖于底盘,而底盘依赖于轮胎,如下图所示:

 实现这个构造过程需要在每个实体类里面new所依赖的类,整个程序呈现出层层依赖的结构,这正是问题所在,当最底层代码进行改动之后,就需要对整个调用链的代码进行修改。这就是传统开发中的弊端,如何解决呢?

要想解决上面的问题我们可以考虑不在每个类中自己new新的下级类,此时我们只需要将原来由自己创建的下级类,改为传递的方式(也就是注入的方式),因为我们不需要在当前类中创建下级类了,所以下级类即使发生变化(创建或减少参数),也与当前类无关了,这样就完成了程序的解耦

PS:解耦指的是解决了代码的耦合性,耦合性也可以叫做程序的相关性。好的程序的耦合性是很低的,也就是较大可能实现了程序的解耦。

基于以上思路,我们把调用汽车的程序改造一下,把创建子类的方式改为注入传递的方式:

Spring是包含了众多工具方法的IoC容器,既然Spring是一个IoC容器,那么我们就可以认为,以上的这些解耦的相关操作,Spring框架可以帮助我们完成,我们可以直接用所需要的类的对象(这里的直接的前提是我们已经将对象放入到容器中了),而不用自己创建。

Spring具备的两个最基础的功能:

①将对象放入到容器中

②从容器中取出对象

也就是说学Spring最核心的功能,就是学如何将对象存到Spring中,再从Spring中获取对象的过程

3.3什么是DI

DI 即 Dependency Injection 译为 依赖注入。

所谓依赖注入就是在IoC运行期间,自动地将某种依赖关系注入到对象中。所以DI和IoC 是从不同的角度描述的同一件事情。IoC是一种思想,而DI是具体的实现。

4、Spring创建与使用

4.1 创建 Spring项目

①创建一个普通的Maven项目

②添加Spring的框架支持(依赖)到pom.xml文件中(spring-context、spring-beans)

③添加启动类

4.2 存储 Bean 对象

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

        ①存储Bean之前,得先有Bean才行,因此要创建一个Bean

        ②将创建的Bean 注册到Spring容器中,添加注册信息到xml文件中



 //有几个Bean就添加几个bean标签

 

4.3 获取并使用Bean对象

获取Bean对象,分为以下三步:

①得到Spring上下文对象,因为对象都已经注册到Spring中交给Spring管理了,所以要获取对象就要从Spring中获取,那么就得先得到Spring的上下文。

//1.得到上下文分为两种

第一种ApplicationContext:

 ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

第二种BeanFactory:

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

※ApplicationContext VS BeanFactroy(常见面试题)

①继承关系和功能方面:ApplicationContext 是 BeanFactroy的子类,其除了继承了BeanFactroy 访问容器的能力外,它还具有独特的特性,还添加了对国际化支持、资源访问支持、以及事件传播等方面的支持。

②性能方面:ApplicationContext 一次性加载并初始化所有的Bean对象,而  BeanFactroy 是需要哪个才去加载哪个,因此更加轻量。(BeanFactory发挥了老一辈的节俭品质hhh)

②通过Spring上下文,获取某一个指定的Bean对象。

//2.获取指定的bean对象
User user = (User) context.getBean("user");

ps:getBean() 方法有很多重载方法,我们也可以使用其他方式来获取Bean:

//根据类型获取Bean,有局限性,若是一个Bean被注册了两次,此种就会报错

User user = context.getBean(User.class);
// 根据 名称+类型获取Bean,这种比较常用


User user = context.getBean("user",User.class);

③使用Bean对象。

   //3.使用bean对象
   user.sayHi("张三");

4.3 总结

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006482.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号