Spring介绍)
Spring是Java EE编程领域的一个轻量级开源框架.
Spring是一个开源容器框架, 它集成各类型的工具,通过核心的Bean factory实现了底层的类的实例化和生命周期的管理。 在整个框架中,各类型的功能被抽象成一个个的 Bean,这样就可以实现各种功能的管理,包括动态加载和切面编程。
IOC:控制反转
作用:
解耦:降低程序之间的依赖程度 类和类(方法和方法)之间存在依赖关系,通过解耦降低这种依赖,但是不能完全解除这种依赖关系
什么是耦合度:类和类(方法和方法)之间存在依赖程度
如何解耦: 降低耦合度:反射+配置文件
1.使用反射的方式来创建对象,不使用new的方式创建对象
2. 在配置文件中定义需要创建的对象所属类的全限定名,
db.properties dbdriver=com.mysql.jdbc.Driver(类的全限定名)
spring的IOC:Inverse Of Control (控制反转)
spring负责dao,service对象的创建,spring创建dao,service对象的原理类似我们自己写的方式(反射+配置文件)
1.加入spring依赖
2.dao,service
3.创建spring的配置文件
4.从spring容器中获取对象
容器接口:
ApplicationContext: 配置文件加载完成,对象就创建完成了,立刻创建对象的方式,
单例 ClassPathXmlApplicationContext: 加载的是类路径下的配置文件,
常用 FileSystemXmlApplicationContext: 加载磁盘上的任意位置的配置文件
AnnotationConfigApplicationContext:注解
顶层接口是:BeanFactory,延迟创建对象,当使用getBean方法获取对象时,才会创建对象,多例XmlBeanFactory
创建对象的三种方式:
第一种方式:使用默认的构造方法创建对象在bean标签中只配置id和class两个属性适合于自己定义的类
<bean id="accountService" class="com.service.impl.AccountServiceImpl"></bean>
第二种方式: 实例工厂负责创建对象 如何得到工厂创建的对象
1.创建工厂的对象
2.调用工厂对象的方法
<bean id="factory" class="com.factory.InstanceFactory"></bean>
<bean id="accountService" factory-bean="factory" factory-method="getInstance"></bean>
第三种方式: 静态工厂负责创建对象 不需要创建工厂的对象,直接调用工厂类的方法
<bean id="accountService" class="com.factory.StaticFactory" factory-method="getInstance"></bean>
对象的作用范围:
scope: singleton 单例
prototype 多例
request 请求范围
session 会话范围
global-session 集群环境下的范围,如果没集群则等价于session
<bean id="accountService" class="com.service.impl.AccountServiceImpl" scope="prototype" ></bean>
对象的生命周期:
单例:
实例化:容器创建时就创建了对象
活着: 只要容器不关闭,就一直活着
销毁: 容器关闭了,对象就被销毁了,和容器的生命周期一致
例:
实例化:当使用getBean方法获取对象时,创建对象
活着: 只要一直使用,就一直活着
销毁: 当长时间没有使用该对象,且没有其它引用时,才等待垃圾回收器回收
DI: Dependency Injection 依赖注入
一个类中定义的成员变量,都是该类所依赖的
**AOP:**面向切面