spring简介
Spring是分层full-stack轻量级开源框架,以ioc(inverse of control反转控制)和Aop(面向切面编程)为内核
优点:
1.方便解耦,简化开发
通过spring提供的ioc容器,将对象间的依赖关系交由spring进攻控制,避免硬解码造成过渡耦合。用户可以更专注上层应用。
2.AOP编程的支持
通过spring的AOP功能,方便进行面向切面编程,许多不容易用传统oop实现的功能可以通过AOP实现。
3.声明式事务的支持
可以免除事务管理代码,通过声明方式灵活的进行事务管理,提高开发效率。
4.方便程序的测试
可以用非容器依赖的编程方式进行所有测试工作,测试非常方便。
5.方便集成各种框架
spring对(Struts,Hibernate,Hessian,Quartz等)支持
6.降低javaee api使用难度
spring对api(jdbc,javamail,远程调用)进行封装层,使这些api使用难度降低。
7.spring源码
spring源码对java设计模式灵活运用,值得学习。
spring体系结构
spring程序开发步骤
1.导入spring开发基本包坐标
2.编写Dao接口和实现类
3.创建spring核心配置文件
4.在spring配置文件中配置userDaolmpl
5.使用spring的api获得bean实例
IOC底层原理
1.xml解析、工厂模式、反射
工厂模式
ApplicationContext:BeanFactory接口的子接口,提供更强大功能,由开发人员使用
加载配置文件时就会把配置文件对象进行创建
IOC操作Bean管理
Bean管理指的是(1)Spring创建对象(2)Spring注入属性
基于xml方式创建对象
基于xml方式注入属性
DI:依赖注入
1.set方式注入
2.有参构造方式注入
p名称空间注入
原来的注入方式
xml注入其他类型属性
注入对象
xml注入集合属性
工厂Bean
普通bean:在配置文件中定义bean类型就是返回类型
工厂bean:在配置文件中定义bean类型可以和返回类型不一样
1.创建类,作为工厂bean,实现接口FactoryBean
2.实现接口里面的方法,定义返回bean类型
bean作用域
在Spring里面,设置创建bean实例是单实例还是多实例
在Spring里面,默认情况下,bean是单实例对象
scope分singleton和prototype
bean生命周期
1.通过无参构造创建bean实例
2.为bean的属性设置值和对其他bean引用(调用set方法)
3.调用bean的初始化方法(进行配置)
4.bean对象获取后可以使用
5.当容器关闭,调用bean销毁方法(需要进行配置销毁方法)
在第三步执行初始化方法之前
把bean实例传递给bean前置处理器的方法postProcessBeforeInitialization
在第三步执行初始化方法之后
把bean实例传递给bean后置处理器的方法postProcessAfterInitialization
XML自动装配
1.根据指定装配规则(属性名称或者属性类型)Spring自动将匹配的属性值进行注入
2.(1)根据属性名称自动注入
注解方式操作Bean管理
组件扫描配置
注解
@ Autowired:根据属性类型进行自动装配
@Qualifier:根据属性名称进行注入
@Resource:可以根据属性类型进行注入,也可以属性名称进行注入
@Value:注入普通类型属性
Autowired和Qualifier一起使用
注解创建对象
1.把service和dao对象创建,在service和dao类添加创建对象注解
2.在service注入dao对象,在service类添加dao类型属性,属性上面使用注解
纯注解开发
1.创建配置类,替代xml配置文件