目录
(1) IOC:控制反转(Inversion of Controll)
(2)AOP:面向切面编程(Aspect-oriented Programming)
一、Spring框架
概念:spring框架是一款项目管理框架。
核心:用来管理项目中组件对象的创建、使用和销毁。
二、Spring框架两大核心思想
(1) IOC:控制反转(Inversion of Controll)
概念:控制反转,是指将原来手动通过 new 关键字创建对象的权利交给 spring,由spring工厂创建对象的过程,并且在创建对象的过程的同时,通过DI的方式维护组件与组件间的调用关系。
DI:依赖注入(Dependency injection)
概念:为组件中成员变量完成赋值的过程,称为依赖注入。 spring在创建对象的时候需要给属性赋值,给属性赋值就是依赖注入。
spring中的注入方式:
a. SET注入:使用成员变量 set 方式进行赋值 (重点)
<!--八大基本数据类型+日期类型+String类型的注入-->
<property name="name" value="zhagnsan"/>
<property name="age" value="21"/>
<property name="id" value="100063"/>
<property name="bir" value="2012/12/12"/>
<property name="price" value="23.23"/>
<!--集合类型-->
<property name="lists">
<list>
<value>aaa</value>
<value>bbb</value>
<value>ccc</value>
</list>
</property>
<property name="maps">
<map>
<entry key="aa" value="xiaohei"/>
<entry key="bb" value="xiaoming"/>
<entry key="cc" value="xiaosan"/>
</map>
</property>
<!--注入数组类型数据-->
<property name="qqs">
<array>
<value>xxx</value>
<value>qqq</value>
<value>vvvv</value>
</array>
</property>
<--Properties类型-->
<property name="props">
<props>
<prop key="url">jdbc:mysql://localhost:3306/test</prop>
<prop key="driver">com.mysql.jdbc.Driver</prop>
<prop key="username">hr</prop>
<prop key="password">hr</prop>
</props>
</property>
b. 构造注入:使用构造方法形式进行属性的赋值 (了解)
c. 自动注入:通过在配置文件中完成类中属性的自动赋值 (了解)
注意:在配置bean标签的时候我们可以在bean标签上面添加autowire属性。这个就是设置属性自动注入的。自动注入的方式有两种。
- byName.按照bean标签的id跟类中的属性名一致就注入成功。
- byType。按照bean标签的类型跟类中的属性的类型一致就注入成功。注意,不能有两个bean标签类型一致,否则就注入失败。
(2)AOP:面向切面编程(Aspect-oriented Programming)
------更新中
三、Spring工厂创建对象的原理
原理:反射 + 构造方法
四、Spring工厂管理组建的生命周期
1.单例对象:工厂启动,工厂中所有单例的对象随之创建;工厂销毁,工厂中所有单例对象随之销毁。
2.多例对象:每次在工厂中使用时进行创建,工厂不负责多例对象的销毁,因为它不知道该什么时候销毁。
五、Spring工厂的好处
-
使用配置文件管理java类,再生产环境中更换类的实现时不需要重新部署,修改文件即可
-
spring默认使用单例的模式创建bean,减少内存的占用
-
通过依赖注入建立了类与类之间的关系(使java之间关系更为清晰,方便了维护与管理)