前言:看了B站黑马程序员,狂神说JAVA,个人觉得还是狂神讲的更加细致,现记录自己的学习过程
一、Spring是一个框架,是为了让现有的技术更加容易使用,本身就是一个大杂烩,整合了现有的技术框架。
优点:Spring是一个开源的免费的框架(容器)!
Spring是一个轻量级的,非入侵式的框架
控制反转(IOC),面向切面编程(AOP)
支持事务的处理,对框架整合的支持
总结:Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。
二、控制反转:
控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的。
反转:程序本身不创建对象,而变成被动的接收对象
依赖注入:就是利用set方法来进行注入的。
IOC是一种变成思想,由主动的编程变成被动的接收。
类型 变量名 new 类型();
Hello hello = new Hello();
现在只要在xml配置文件中配置即可
id = 变量名
class = new的对象
property相当于给对象中的属性设置一个值
<bean id ="hello" class="com.icecream.Hello">
<property name="str" value="Spring”>
</bean>
</beans>
三、IOC创建对象的方式
1.使用无参构造创建对象,默认方式
2.假设我们需要使用有参构造创建对象。
1.下标赋值
<bean id ="user" class="com.icecream.user"> <constructor-arg index="0" value="java学习"/></bean>
2.通过类型创建,但是不建议使用
<bean id ="user" class="com.icecream.user"> <constructor-arg type="java.lang.string" value="java学习1"/></bean>
3.通过参数名创建
<bean id ="user" class="com.icecream.user"> <constructor-arg name="name" value="java学习2"/></bean>
总结:在配置文件加载的时候,容器中管理的对象就已经初始化了。
四、spring配置
1.别名:
alias=""即可
如
<alias name="user" alias="userNwe"/>
如果添加了别名,我们也可以使用别名来获取到这个对象
2.
id:bean的唯一标识符,也就是相当于我们之前java中学的对象名
class:bean对象所对应的全限定名,:包名+类型
name:也是别名
import,一般用于团队开发使用,他可以将多个配置文件,导入合并为一个总的
<import resource ="bean.xml"/> <import resource ="bean2.xml"/> <import resource ="bean3.xml"/>
使用的时候使用总的配置就行了
五、依赖注入
1.构造器注入
2.Set 注入 (重点)
见:https://blog.csdn.net/qq_33369905/article/details/106647271?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165260651916781432989642%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165260651916781432989642&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-4-106647271-null-null.nonecase&utm_term=IOC&spm=1018.2226.3001.4450
参考文档:https://blog.csdn.net/qq_33369905/article/details/106647330?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165260651916781432989642%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165260651916781432989642&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-106647330-null-null.nonecase&utm_term=IOC&spm=1018.2226.3001.4450