Spring学习笔记1


前言:看了B站黑马程序员,狂神说JAVA,个人觉得还是狂神讲的更加细致,现记录自己的学习过程

一、Spring是一个框架,是为了让现有的技术更加容易使用,本身就是一个大杂烩,整合了现有的技术框架。

优点:Spring是一个开源的免费的框架(容器)!

Spring是一个轻量级的,非入侵式的框架

控制反转(IOC),面向切面编程(AOP)

支持事务的处理,对框架整合的支持

总结:Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。

二、控制反转:

控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的。

反转:程序本身不创建对象,而变成被动的接收对象

依赖注入:就是利用set方法来进行注入的。

IOC是一种变成思想,由主动的编程变成被动的接收。

Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。 采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。而具体获取的方法、对象被获取时的状态由配置文件(如XML)来指定。 所谓的IOC,就是由Spring来创建,管理,装配   Java语法:

类型 变量名 new 类型();

 Hello hello = new Hello();

现在只要在xml配置文件中配置即可

id = 变量名

class = new的对象

property相当于给对象中的属性设置一个值

  <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