本文适合已学人士,仅供复习参考。全程手打,纯TXT,无代码参考,特告知
笔记网盘链接,新页面导航栏有地址和提取码
一、 Ioc:控制反转
1、IOc是一个概念,一个思想。用来指导我们如何创建、管理、使用对象。
控制:控制对象的创建,属性的赋值,依赖关系的管理,以及控制对象从创建到销毁的整个生命周期。
反转:把开发人员在代码中创建的对象的权限转移给代码之外的容器(spring)实现,由容器实现对对象的创建和管理。
正转:在源代码中,有开发人员,new出构造方法创建对象
Ioc:简单来说是由容器(spring)来创建对象,而我们来使用创建好的对象。spring可以创建和管理对象,管理依赖关系。
spring可以看作是一个工厂,负责生产java对象。
2、使用Ioc思想的技术:servlet、fileter、listener
3、Ioc技术的实现
1)、DL依赖查找
2)、DI依赖注入
只需在代码中提供要使用的对象名称,对象如何创建、赋值则不需要考虑,由spring容器来完成
spring使用的DI技术实质上是使用反射机制来完成的。spring这个容器中,替你管理着一系列的类,前提是你需要将这些类交给spring容器进行管理,
然后在你需要的时候,不是自己去定义,而是直接向spring容器索取,当spring容器知道你的需求之后,就会去它所管理的组件中进行查找,然后直接给你所需要的组件.
注入方式: 1.set方式注入 2.构造方法注入 3.字段注入
注入类型: 1.值类型注入 2.引用类型注入
好处:
1.降低组件之间的耦合度,实现软件各层之间的解耦.
2.可以使容器提供众多服务如事务管理消息服务处理等等。当我们使用容器管理事务时,开发人员就不需要手工 控制事务,也不需要处理复杂的事务传播
3.容器提供单例模式支持,开发人员不需要自己编写实现代码.
4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
5.容器提供众多的辅佐类,使这些类可以加快应用的开发.如jdbcTemplate HibernateTemplate
4、ApplicationContext & BeanFactory区别
BeanFactory接口
(1) spring的原始接口,针对原始接口的实现类功能较为单一
(2)BeanFactory接口实现类的容器,特点是每次在获得对象时才会创建对象
ApplicationContext接口
(1)每次容器启动时就会创建容器中配置的所有对象
(2)提供了更多功能
(3)从类路径下加载配置文件: ClassPathXmlApplicationContext
从硬盘的绝对路径下加载配置文件:FileSystemXmlApplication
5、spring配置详解
5.1、元素属性
bean元素:使用该元素描述需要spring容器管理对象
name属性:给被管理的对象起个名字,获得对象时getBean("name值")
class属性:被管理对象的完整类名
id属性:与name属性一模一样,名称不可重复,不能使用特殊字符
name和id之间的一些注意点:
1、配置两个相同的 id 或者 name 都不能通过。
2、如果既配置了 id ,也配置了 name ,则两个都生效。如果id和name都没有指定,则用类全名作为name,如<bean class="com.stamen.BeanLifeCycleImpl">,
则可以通过getBean("com.stamen.BeanLifeCycleImpl")返回该实例。
3、如果配置基本类的时候,注解和配置文件都使用的时候,注解和配置文件中 name 相同的时候, 则两个冲突,配置文件生效。
如果配置基本类的时候,注解和配置文件都使用的时候,注解和配置文件中 name 不相同的时候, 则两个不冲突,都能够生效。
5.2、bean元素的装配
(1)、bean的默认装配
Spring调用bean类的无参构造方法,创建具体的实现类
(2)、bean的作用域:bean对象的存在范围与可见性
当Spring创建一个bean的实例时不仅可以完成bean的实例化,还可以通过scope属性为bean实例指定作用域范围
【1】singleton:单例模式。即在Spring容器中,使用singleton定义的bean对象的是单例的。默认为单例模式
创建时间:Spring容器被创建的时候被创建
【2】prototype:原型模式。即在每次使用getBean方法获取到的同一个bean的实例都是一个新的实例
创建时间:被调用的时候被创建
【3】request:对于每次HTTP请求,都将会产生一个不同的Bean对象
【4】session:对于每个不同的HTTP session,都将会产生一个不同的Bean实例
注意:对于scope的值request、session只有在Web应用中使用Spring时,该作用域才有效
6、Spring的注入方式(di依赖注入,注入给属性赋值)
6.1、 注入方式: 1、使用xml中的标签和属性(set注入) 2、使用注解
注入类型: 1.值类型注入 2.引用类型注入
设值注入:Spring调用类的set方法,完成赋值,最为常用
构造注入:Spring调用类的有参构造方法完成注入
简单类型:Java的String类型和基本数据类型
6.2、简单类型set注入
语法格式:
<bean>
<property name = "属性名" value = "属性值" />
····
····
</bean>
注意:无论是何种简单类型的属性值都在双引号里
6.2、引用类型set注入
引用类型set设值注入语法格式:使用ref属性来声明要引用的对象
<bean>