spring简介
spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,mybati框架等组合使用。
IOC与DI
ioc控制反转。把对象的创建就给spring配置。DI依赖注入,向类里面的属性设置值。依赖注入不能单独存在,需要在ioc基础上完成。
属性注入的几种方式:
(1)构造函数注入
(2)set注入
(3)p名称空间
对象的注入:
使用注解创建对象:
@Service,@Component,@Controller,@Repository
注解注入对象:
@Autowired @Resource
AOP
Aspect Oriented Programming 面向切面编程。解耦是程序员编码开发过程中一直追求的。AOP也是为了解耦所诞生。
具体思想是:定义一个切面,在切面的纵向定义处理方法,处理完成之后,回到横向业务流.
AOP 主要是利用动态代理模式的技术来实现的
.
有接口的情况下使用jdk代理。没有接口的情况使用 cglib动态代理。
AOP操作术语
1 Joinpoint(连接点):在spring中这些连接点指的就是可以被增强的方法。
2.在类里面可以很多的方法增强,比如在实际的操作中,只是增强了类里面的add方法和update方法,实际增强的方法称为切入点。
前置通知:在方法执行前通知。
后置通知:在方法执行后通知。
异常通知:在方法出现异常
最终通知:后置之后执行
环绕通知:在方法之前和方法之后通知。
3.Aspect(切面)把增强应用到具体的方法上面,这个过程称之为切面。
AOP 的实现原理
AOP分为静态AOP和动态AOP。静态AOP是指AspectJ实现的AOP,他是将切面代码直接编译到Java类文件中。动态AOP是指将切面代码进行动态织入实现的AOP。Spring的AOP为动态AOP,实现的技术为: JDK提供的动态代理技术 和 CGLIB(动态字节码增强技术) 。尽管实现技术不一样,但 都是基于代理模式 , 都是生成一个代理对象 。
使用注解操作AOP
SpringMVC
运行原理图:
1.用户发起请求,dispatcherServlet获取用户访问的路径。
2.dispatcherServlet去找相应的处理器。
3.dispatcherServlet调用处理器访问controller.
4.controller调用service,返回modelAndView。
5.dispatcherServlet得到处理结果。
6.调用view解析器对model进行解析
7.将解析后的model数据传给view显示
8.http响应给浏览器。