1.Spring中IOC的三种方式?(5分)
1.构造方式注入
2.setter方式注入
3.注解方式注入
2.什么是控制反转(IOC)?什么是依赖注入(DI)?
控制: 给对象中属性赋值的权利
反转:把对象中属性赋值的权利由代码 反转到了Spring的配置文件中
控制反转:就是对象之间的依赖关系由容器来创建,对象之间的关系本来是由我们开发者自己创建和维护的,
在我们使用Spring框架后,对象之间的关系由容器来创建和维护,将开发者做的事让容器做,这就是控制反转。BeanFactory接口是Spring Ioc容器的核心接口。
依赖注入:当一个类型需要另一个类型时,这两个类型就产生了依赖关系,那么我们就可以把其中的一个类型
作为另一个类型的属性进行对应的注入
控制反转是目标,依赖注入是我们实现控制反转的一种手段。
3.Springmvc的核心和3大组件其配置文件在哪个包下 (5分)
1.处理器映射器
2.处理器适配器
3.视图解析器
jar包下的/org/springframework/web/servlet/DispatcherServlet.properties
4.springmvc的执行流程
01、用户发送出请求到前端控制器DispatcherServlet。
02、DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。
03、HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。
04、DispatcherServlet调用HandlerAdapter(处理器适配器)。
05、HandlerAdapter经过适配调用具体的处理器(Handler/Controller)。
06、Controller执行完成返回ModelAndView对象。
07、HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。
08、DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)。
09、ViewReslover解析后返回具体View(视图)。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户。
5.AOP原理
AOP:面向切面、面向方面、面向接口是一种横切技术
横切技术运用:
1.事务管理: (1)数据库事务:(2)编程事务(3)声明事物:Spring AOP-->声明事物
2.日志处理:
3.安全验证: Spring AOP---OOP升级
静态代理原理:目标对象:调用业务逻辑 代理对象:日志管理
表示层调用--->代理对象(日志管理)-->调用目标对象
动态代理原理:spring AOP采用动态代理来实现
(1)JDK(基于接口)实现InvocationHandler接口
(2)CGLIB(基于父子类继承关系)创建代理类(通过java API)
Proxy.newProxyInstance(动态加载代理类,代理类实现接口,使用handler);
(3)调用invoke方法(虚拟机自动调用方法)
spring默认动态代理类的方式是JDK实现
修改 proxy-target-class="true" 修改为CGLIB