Spring 框架
1、Spring 的作用域
1、singleton :单例模式,默认
2、prototype :每一次请求都会创建一个单例
3、request: 每一次Http 请求都会创建 一个实例
4、session :每个Http 会话都会创建一个实例
5、application:每一个ServletContext 生命周期内只存在一个实例
2、什么是 Spring
1、Spring 框架企业应用级框架,核心IOC 控制反转 和AOP 面向切面编程;
IOC 控制反转:将对象的创建和依赖关系都交给容器管理,降低组件之间的耦合度
AOP 面向切面编程,将一些与具体业务逻辑无关的内容分离开来,实现五侵入式的逻辑增强,主要应用于日志、事务方面
3、DI 依赖注入的方式
构造器注入:强制依赖,保证bean 创建时的完整性,线程安全
setter 方法注入:可选依赖,灵活度高
4、@Autowired 和@Resource 的区别
@Autowired 是先按照byType 注入,如果找到再按照byName 匹配
@Resource 是一种规范 ,先按照byName 注入,如果按照byName 匹配不到,就按照byType 匹配
5、单例模式有哪些
饿汉式:在类加载的时候,创建实例,会造成资源浪费
懒汉式:在第一次请求的时候,才会进行实例创建,容易创建多个实例,发生线程安全问题
双重检锁:通过两次加锁判断实例是否为空
静态内部类:
枚举方式:
6、JDK 动态代理和CGLIB 代理的区别
jdk 动态代理 :利用 Java 标准库的proxy和Invocationhandle 运行时动态产生一个实现目标接口的代理类,利用的时 Java 的反射机制
cglib 代理,通过第三方库字节码技术生成,通过继承的方式,通过生成子类的方式来加强目标类
