初识Spring框架
1.为何要学习Spring框架
学习框架相当于从”小作坊“到”工厂“的升级,小作坊什么都需要自己来完成,而框架就在一定意义上实现了自动化,框架更加易用、简单且高效。
2.Servlet以及Spring Boot
2.1 servlet框架步骤
①首先创建一个maven项目选择webapp
②搜索servlet添加框架到pom.xml中
③添加业务代码、实体类、控制器
④运行项目(借助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文件中


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发挥了老一辈的节俭品质)
②通过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("张三");
总结初始Spring框架

总结:
可能存在的潜在问题:在pom.xml中配置的相关依赖

这里可能出现红色标识符,表明自己的工厂没有搭配好

这里需要修改文件的配置以及所需的依赖