(一)类加载时的初始化顺序:
(静态变量,静态初始化块)>(变量,初始化块) >构造器
注:括号内的初始化顺序取决于在类中的书写顺序,从上往下。
在有继承关系的父类子类中,父类的静态变量及静态初始化块先于子类的,等所有的静态初始化完毕,然后又先初始化父类的(变量,初始化块) > 构造器。最后再初始化子类的(变量,初始化块) > 构造器
1.静态变量:public static String str = "静态变量"
2.静态初始化块:
static
{
do something;
}
3.变量:public String str ="变量"
4.初始化块:
{
do something;
}
5.构造器:
public classname(){
}
(二)MVC框架的问题
传统的MVC模式:jsp+servlet+javabean
传统的MVC的问题:
1.所有的Servlet都要配置在web.xml中,导致其配置过于庞大。不能实现模块化管理
2.Servlet的参数只能单个接受,接收完成还要自己封装到model中(model指实例化的一个javabean的引用对象)
(三)Spring的两大核心
Spring是什么?
主要是针对javabean的生命周期进行管理的轻量级容器
两大核心的作用:
1.IOC或DI:控制反转或依赖注入
没有Spring的原始方式:Service需要调用Dao,Service就需要创建Dao。
Spring的方式:Spring发现Service依赖于Dao,就给你主动注入。(核心原理:配置文件+反射(也可以是工厂模式)+容器(也就是一个map))
2.AOP:面向切面编程
核心原理:使用动态代理的方式在方法执行前后与出现异常时执行加入的相关逻辑
用途:事务处理,权限判断,日志管理