spring就是一个对象容器,所有的对象放在spring中,spring是一个分层的javase(一站式)轻量级开源框架,spring是一个大工厂,可以将所有的对象创建和依赖关系维护,交给spring管理aop编程的支持。
spring提供面向对象编程,可以方便的实现对程序进行权限拦截、运行监控等功能声明式的支持
IOC:inverse of control 翻转控制
依赖注入:将必须的属性注入到对象当中,是实现ioc思想的必须条件
以前对象是由我们开发人员自己维护,可以由spring完成创建以及注入,翻转控制就是翻转了对象的创建方式,从我们自己创建翻转给了程序(spring)
注入方式:
set方法注入
构造方法注入
字段注入
注入的类型:
值类型注入:8大基本数据类型
引用类型注入:将依赖的对象注入,比如server依赖dao
ioc是思想,di是技术
BeanFactory接口实现类的容器,特点是每次在获取对象时才会创建对象
spring原始接口,针对原始接口的实现类功能较为单一
Applicationcontext 每次容器启动时就会创建容器中所有额对象,并提供更多功能。
从类路径下加载需要用到classpathxmlapplicationcontext
web开发中,使用applicationContext,在资源匮乏的环境中使用BeanFactory
Bean元素使用该元素描述需要spring容器管理的对象
class属性:被管理对象的完整类名,可以重复,可以使用特殊字符。
id属性:与name属性一模一样。名称不重复,不能使用特殊字符。结论尽量使用name属性。
spring中一般是空参构造函数。
scope中的属性代表创建对象时时多例还是单例 singleton单例,prototype是多例。一般使用都是singleton,prototype的使用在整合struts2中才会配置多例,原因是action是每次请求都要被创建
Name:构造函数的参数名-----这个相对于是用的构造函数注入(constructor-arg)
index代表的是参数类型
type属性,代表的是参数类型
启动注解方式注入
<context:component-scan base-package="cn.itcast.bean">
</context:component-scan>
在某一个类上可以用一个注解
@A
joinpoint(连接点):目标对象中,可以增强的方法
pointcut(切入点):目标对象,已经增强的方法
advice(通知:增强代码)
target(目标对象:被代理的对象)
weaving(织入):将通知应用到切入点
proxy(代理):将通知织入到目标对象之后,形成代理对象
aspect(切面):切入点+通知