Spring入门第一篇
我的基础是 JavaEE(必须) tomcat JavaWeb相关知识(最好有) maven(必须)
我看的教程 b站视频教程链接
用的是 IDEA jdk12
正式开始
Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。而spring的核心思路就是高内聚低耦合.
控制反转
控制反转是指在原本的设计中,你需要一个对象你就new一个对象,但在spring中,你需要一个对象不需要自己去new,而是让容器给你一个对象,也就是把控制权交给了容器,这就是控制反转的意思.
好处
控制反转的好处在哪里呢,要理解其好处,首先要了解这个控制反转的本质,就是java设计模式中的工厂模式
工厂模式
就相当于对象工厂,专门生产对象,你不用自己去创建对象,只需要输入对象的String名称,就返回一个对象
如下图所示就是一个工厂类,传入一个String类型的参数,就返回一个对象
那这么做的好处就在于削弱了程序间的耦合
原本如果我有a,b,c三个类,在a类中我需要一个b对象,那我就必须new 一个b,但是这就使得ab之间产生了一定的关系,如果我以后要需求变了,原本a类中需要b类的地方都改为需要c类,那我必须在a类里也修改,这就很麻烦,可能你觉得也不麻烦啊,但如果有100个类全都用到了b的对象呢,难道都要一个个改吗?
这时候工厂模式的好处就体现出来了,原本a类中使用一个String名称向工厂调用一个b类对象,而需求变更后,我只需要修改工厂就行了,把原本名称对应的对象改为c类,而a类中还是使用同一个名称在工厂中调用对象,不需要改动所有a类中的代码,这样a和b,c之间的关系就比较松散,影响小
代码实现
首先new project,然后用maven创建项目
直接next,然后group什么的随便写
pom.xml里写两段
分别是打包方式和maven的spring依赖
<packaging>jar</packaging>/
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
</dependencies>
然后再java文件夹下创建两个类,resource文件夹下创一个bean.xml
database类中写一个无参构造方法
然后在bean.xml里标签内部写
id是在工厂中搜索对象的标志,class是完整的类名路径
然后在servlet类中调用工厂并创一个database对象
此处调用工厂还有另一个类 BeanFactory
两者对比如下
即单例对象中的饿汉式和懒汉式
(所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理
单例的好处:没必要每个请求都新建一个对象,这样子既浪费CPU又浪费内存;
多例的好处: 之所以用多例,是为了防止并发问题;即一个请求改变了对象的状态,此时对象又处理另一个请求,而之前请求对对象状态的改变导致了对象对另一个请求做了错误的处理;
选择多例或单例的标准: 当对象含有可改变的状态时(更精确的说就是在实际应用中该状态会改变),则多例,否则单例)
结果如下
简单的第一步 成功使用IOC!