一. bean标签下注入:
1.构造器注入 <construction-arg index="要注入的第一个属性",type="java.langString " value="">
2.set方法注入 <property name="" value="">
3.构造标签和property标签的: ref属性的值为另一个bean对象.bean对象必须先声明,完成引用类型的注入.
4 .<bean>.标签下集合属性注入: 专门的标签来注入
1. list集合或数组 <property name="list"> <list> <value>sfda
2. set集合: <property name="set"> <set> <value>sfda
3. map集合: <property name="map"> <map><entry key=""或key-ref value=""或value-ref>
4. properties : <property name="map"> <props><prop key="">值
二. spring2.0后 名称空间p和c的使用: 他们是虚拟的, 嵌入在spring内核中的,
1.使用 p 名称空间可以解决我们setter注入时 <property> 简化
前提: 把xmls:p = .....schema/p
使用: 在 bean 标签内: p:成员属性名="值"
2. 使用 c 名称空间可以解决我们构造器注入时<constructor-arg>简化
前提: 把xmls:c = .....schema/c
使用: 在 bean 标签内: c:成员属性名="值" 或c:成员属性-ref
3. spring 中 spel表达式; 类似与 ognl 或 el表达式 完成对象属性存储以及方法调用 spring3.0提供的.
原来: ref 快 , 用 value="#{dog.age或getage()+10}" (很少使用)
三 . name和id: name; 不同包含特殊符合,为了更好的扩展 id: 遵守xml规范,名称内不能包含特殊符合
四 . aspectj 切点 传统开发, 可以使用<aop:xxx> 来简化操作.
1. aspectj 框架实现 aop aspect: 切面=切点+通知(多个切点和多个通知的组合) aspectj: 第三方框架,可以使用部分语法
定义通知类型6种, 前置,后置,环绕,抛出,引介,最终通知(不过是否有异常,都会执行.)
. 2. 在 aspectj 中它的增强可以不实现任何接口,只需要定义出增强功能
xml文件中: <aop:config> <aop:aspect ref="通知"> <aop:before method="">
<aop:after-throwing method="afterThrowing" pointcut-ref="delPointCut" throwing="ex"/>
3. 环绕通知方法 public object around(proceedingjoinpoint pjp){ pjp.proceed(); }
异常抛出通知 public void afterThrowing(JoinPoint jp,Throwable ex) {
System.out.println("发现了异常。。。。"+ex)
4. 关于各个通知的参数
前置通知:参数 joinpoint jp, jp.getSignature().getDeclaringTypeName() 获取目标类名
后置通知: 参数 joinpoint jp, object val 要在xml中配置 returning="val" 注意参数名要一致
环绕通知 : 参数 proceedingjoinpoint pjp, Object obj = pjp.proceed() 执行目标行为
异常抛出通知: 参数 JoinPoint jp ,Throwable ex 在xml中 throwing="ex"
最终通知: after(JoinPoint jp ) jp.getSignature().getName() 方法名;
五. 关于代理方式的选择: 在xml中 <aop:cofig proxy-target-class的值默认为false,代表有接口使用proxy >
六 : 注解开发: <context:component-scan base-pakeage> 扫描指定包下的注解;
开启aspectj注解自动代理功能: <aop:aspectj-autoproxy/>
创建无参数方法: 在参数上面: @pointcut("execution(* *.update(..)")
七:. spring 在web开发中的应用.
1.导入一个jar包
2.在web.xml 配置<listener-class> org........web.contextloaderlistener
contextloaderlistener他实现了servletcontextlistener,他是监听整个容器操作的
在这个listener中,当我们服务器启动时, contextloaderlistener他帮我们创建了servletcontext对象
而将applicationcontext对象的一个实现类webapplicationcontext存入到了servletcontext中.
servletcontext.get
3.我们还需要在web.xml文件中配置 applicationcontext.xml文件, 默认情况下会在web-inf目录下查找
全局变量: <context-param> <param-name> contextconfiglocation</param-name>
<param_value> classpath:applicaitoncontext.xml
就是在src下查找配置文件