课程内容:
1,Spring
2,SpringMVC
3,Maven高级
4,SpringBoot
5,MyBatisPlus
收获:
基于SpringBoot实现基础SSM框架整合
掌握第三方技术与SpringBoot思想整合
Spring的专业角度:
1,简化开发:IoC,AoP–>事务处理
2,框架整合;MyBatis,MyBatisPlus…
spring官网
我们要学的是:SpringFramework:Spring框架
Spring Framework是spring生态圈中最基础的项目,是其它项目的根基
springframekork学习线路
传统的代码书写方式耦合度非常高,如果一旦动了底层的东西,那么需要重新测试,重新部署等,十分不便
解决方案:使用对象时,在程序中不要主动使用new对象,转为由外部提供对象(“你不就是要new一个对象吗,你不要自己写,我给你写”)这就是IoC
Inversion of Control控制反转:将对象的创建控制权由程序转移到外部
Spring提供了一个容器,叫做IoC容器(即Core Container),来充当IoC思想中的“外部”
IoC容器负责对象的创建,初始化等一系列工作,被创建或被管理的对象在IoC容器中统称Bean
假设现在,我们的service交给IoC容器处理了,结果一运行,报错了,说:我的service需要依赖Dao运行啊,怎么办?IoC说:那我干脆也把你的Dao交给我处理好了,这个行为就叫做:DI(Dependency Injection)依赖注入
在容器中建立的bean与bean之间的依赖关系的整个过程,称为依赖注入
使用IoC容器管理bean(IoC)
在IoC容器内将有依赖关系的bean进行关系绑定
最终便是:使用对象时不仅可以直接从IoC容器中获取,并且获取到的bean已经绑定了所有的依赖关系
1,分析原案例
以上是普通的执行流程,现在我们需要把它改造成IoC模式
然后刷新maven,再导入spring config的xml
然后在xml中配置需要IoC化的类
现在新建一个主类APP2进行拿容器拿方法
注意,bean定义id属性在同一个文件上下文中不要重复!不然咋找呢
3:在service实现类里面,我们采用了set方法来获取Dao对象
4:怎么联系上service与dao之间的关系?我们在配置里,把bookservice里面添加上bookdao的联系方式即可
然后即可实现方法
需要注意的的是,我们在xml里面配置的
就是用来绑定dao与service层的bean关系的
bean基础配置
bean的别名:在配置xml中,我们可以在
里面写上name标签以供给name
起别名
然后我们在主方法里改一下别名,并运行一下,可以发现还是一样能执行的
因此其实我们能发现
的id属性与name属性是等同的,ref属性可以引用他们俩任何一个(但建议还是id引用)
接下来是一个需要我们会阅读的错误:
这告诉我们,我们把bean的名字写错了,也就是说,要么getBean()
的参数写错名字了,要么xml
里的名字写错了
我们尝试比较两个来自同一个bean的地址,结果发现他们地址是一样的,说明spring默认给我们创建的bean是单例的
如果想要创造非单例的,就需要在xml里面创建了
现在便是不同的地址了
为什么spring要默认单例呢?因为spring为了解决开销问题和处理速度,考虑到容器承受压力,(如果有一个新的业务就造一个bean对象,那么岂不是无穷无尽了么)因此,默认使用单例,提高复用性