复习:
1.Spring介绍
spring并不局限于某一层
spring是对象的容器,帮我们管理项目中的所有对象
2.spring搭建
1>导包4+2+1
2>准备类
3>书写配置
4>书写代码测试
3.spring中的概念
ioc:反转控制.创建对象的方式反转了,从我们自己创建对象,反转给spring来创建
di:依赖注入,将必须的属性注入到对象中.是实现ioc思想必须条件.
beanFactory与ApplicationContext
4.配置文件详解
(1)bean元素
id:给bean起个名字 不能重复,不能使用特殊字符,早期属性
name:给bean起个名字 能重复,能使用特殊字符,后来属性
class:类的完整类名
(2)生命周期属性
init_method 指出初始化方法
destory-method指出销毁方法
(3)作用范围属性
scope属性:
singleton(默认值):单例,创建容器时会立即创建单例对象
prototype:多例,每次获取对象时,才会创建对象,并且每次都会创建新的对象
(4)分模块开发 import
5.bean的创建方式
*空参构造创建
静态工厂
实例工厂
6.注入方式
*set方法
*构造方法
p名称空间
spel表达式
7.复杂属性注入
array
list
map
properties
8.在web环境中使用spring容器
1>导包 4+2+1(spring_web)
2>在web.xml中配置listener =>ContextLoaderListener
|-配置参数,指定spring配置路径
3>在action中,使用工具类获得容器
|-WebApplicationContextUtils.getWebApplicationContext(servletcontext sc)
Spring-day02
1.使用注解配置spring
(注解代替配置文件)
步骤
- 导包4+2+spring-aop
- 需要为主配置文件引入新的命名空间(约束)
- 开启使用注解代替配置文件
- 在类中使用注解完成配置
将对象注册到容器
修改对象的作用范围
值类型注入
通过反射的field赋值(破坏了类的封装性,不推荐)
通过set方法赋值(推荐使用)
引用类型注入(推荐使用@Resource)
初始化|销毁方法
2.STS插件
- 1.手动安装插件(成功率较低)
- 2.使用老师的eclipse
- 3.spring装好安装插件的eclipse
3.spring与junit整合测试
- 1.导包(4+2+aop+test)
- 2.配置注解
- 3.测试
2.spring中的aop
AOP思想
横向重复,纵向抽取
spring中的aop
Spring能够为容器中管理的对象生成动态代理对象
以前我们需要自己调用下面这个方法,Proxy.newProxyInstance(xx,xx,xx)生成代理对象
spring能帮我们生成代理对象
spring实现aop的原理
- 1.动态代理(代理对象和被代理对象实现同一个接口)
|-被代理对象必须要实现接口,才能产生代理对象.如果没有接口就不能使用动态代理技术 - 2.cglib代理(对目标对象进行继承代理)
|-第三方代理技术,cglib代理,可以对任何类生成代理,代理的原理是对目标对象进行继承代理.如果目标对象被final修饰,那么该类无法被cglib代理
Joinpoint(连接点):目标对象中,所有可以增强的方法
Pointcut(切入点):目标对象中,准备增强的方法
Advice(通知/增强):增强的代码
Target(目标对象):被代理对象
Weaving(织入):将通知应用到切入点的过程
Proxy(代理):将通知织入到目标对象形成代理
aspect(切面):切入点+通知
Spring中的aop演示:
步骤:(xml配置)
- 1.导包(4+2+2+2)
前两个是spring的aop包,后两个是spring需要第三方aop包
- 2.准备目标对象
- 3.准备通知
- 4.配置进行织入,将通知织入目标对象中
AOP面向切面编程思想(过滤器,拦截器,动态代理)
横向重复代码,纵向抽取
动态代理(对目标对象中的方法进行增强)
通过动态代理可以体现aop思想
spring中aop开发
spring封装了动态代理代码,我们就不需要手动写动态代理代码
还封装了cglib代理
Spring可以对任何类进行代理增强
Spring中的名词:
步骤:(注解配置)
- 1.导包(4+2+2+2)
- 2.准备目标对象
- 3.准备通知
注解方法写切入点