1、spring的概念
apache推出的java企业框架,提供了基于ioc的对象工厂、aop面向切面编程等功能及其他增强功能。
当前版本4.xxx,支持注解的配置。 springmvc。
2、控制反转(ioc):inversion of control。用来描述框架的重要特征
spring针对ioc的具体实现:依赖注入(DI): Dependency Injection
概念:(考点:如简述IOC)
我们需要的对象,不是由我们自己创建,而是由外部容器事先准备好,我们需要时才去拿。
比如说“在家里有个好老婆”。你需要任何生活中的东西基本都能直接给你,这样我们就能更专注于做自己要做的事,而不用为生活琐事耽误时间。
优点总结:专注业务,无需关注对象的创建。同时外部的容器允许对象具有可替代性,更加灵活。(后边这句的理解:根据接口提供多个实现,让用户选中合适自己的。)
举例:
A a = new A(???); //亲自去创建对象
使用ioc后==>
A a = factory.getBean("a")://从外部对象工厂去拿对象。
a.test();
spring框架提供了ioc的一种代码实现方式:di=依赖式注入(depency injection).
综合应用了java的xml\面向对象\反射技术\工厂模式。
编码:Superman演示依赖注入。
di概念:类持有一个抽象接口,在运行期由他人注入实例来决定运行的结果。
这里重点就是运行期,每次修改只需要改配置,不需要重新编译java文件,效率高。
另外构造时属性可以任意装配,灵活性大。如下例:组合飞行接口,实现在xml中随意配置。
class Superman
{
IFly tool; //持有抽象接口
main()
{
sm.setTool(new Plane()/new Balloon ()); //外部注入
}
}
3、spring的基础配置
a 对象的生命周期 考点
singleton--单例。【默认】
prototype--原型,每次获取都创建新的对象。
request--和request对象生命周期一致。获得响应后释放。
session--和session对象生命周期一致。setMaxInactiveInterval()//超过最大无活动时间就释放。或session.invalidate()。注意:误区:session不是关闭浏览器就结束生命周期,关闭浏览器只是jsessionid重建。服务器内存中的数据不会马上清理。
b 构造注入:本质上是通过反射调用有参构造函数
入参1的值入参2的值
...
设值注入:本质上是通过反射调用setXxx方法
c 对象工厂的延迟创建
lazy-init = true. 默认是false,在创建工厂时自动创建。
背影