1.介绍下Spring,有哪些主要模块

spring是开源轻量级的控制反转和面向切面的容器框架

  • 轻量级是指它的开销和大小小
  • 控制反转(IOC)是将创建对象的过程交个容器来完成和管理对象的生命周期
  • 面向切面(AOP)是将业务逻辑和系统级服务分开
  • 容器来创建对象和管理对象的生命周期
  • 框架将第三方框架整合起来

主要模块

  1. 核心容器
  • Core 核心组件 IOC功能
  • Context 上下文组件 包的扫描
  • Beans JavaBean的生命周期管理
  • sqel spring表达式
  1. 面向切面编程
  • AOP 面向切面编程
  • Aspect 提供了切入点表达式支持
  1. 数据访问和基础模块
  • JDBC JDBC支持
  • ORM 对象映射模型的数据库
  • Transactions 事务支持
  1. Web支持
  • Web 提供web应用上下文
  • WebMVC 全功能的构建web应用的mvc实现

2.讲解IOC和AOP? *

IOC是一个程序设计思想,既控制反转,控制即容器可以对java对象进行管理和创建,反转即是对象由容器创建提供给我们,而不是由我们创建,作用可以减少代码的耦合,减少了代码之间的依赖性

原理:工厂模式(管理和创建对象),反射(创建对象,属性注入)

AOP即面向切面编程,是OOP的补充,主要可以在不改变原来的代码情况下,给代码添加新的功能,可以将核心业务和非核心业务分离开来 场景:日志 事务 权限 性能监控

原理:动态代理

3.IOC注入的几种方式?

  1. set方法注入,用property标签配置
  2. 构造方法注入
  3. 自动装配,autowire属性

4.自动装配的几种方式?

  1. default/no 默认不装配
  2. byName 通过id或name查找
  3. bytype:通过class类型查找
  4. constructor:通过构造方法装配

5.@Autowire和@Resourced的区别?

  • @Autowire 自动装配,通过类型注入,属于spring包
  • @Resource 自动装配,默认按照名称注入,如果找不到名称,则按照类型注入,属于javax包

6.IOC的实现原理?

自定义注解+工厂模式+反射机制实现

7.springboot自动配置原理? *

总:提前用java写好配置,在框架导入后可以自动完成配置 分: 1)在autoconfigure包下包含大量java配置类 2)所有自动配置类都注册spring.factories文件中 3)自动配置类在某些特定条件下生效 @ConditionalOnClass.... 4)启动类上SpringBootApplication注解包含三个注解 SpringBootConfiguration 配置类 ComponentScan 包扫描 EnableAutoConfiguration 启动自动配置 5) EnableAutoConfiguration 包含XXXSelector 6) 选择器中有loadSpringFactories方法读取spring.factires文件,导入到内存,根据条件生效

8.为什么要使用springboot?

  • 自动配置,简化配置
  • 起步依赖,简化依赖导入
  • 内嵌服务器,简化服务器配置
  • 扩展功能,性能监控等

9.SpringBoot的配置文件有哪几种?有什么特点?优先级

properties:通过点的形式配置

yml,yaml:通过换行和缩近形式配置

优先级:properties>yml>yaml

10.SpringBoot的常用注解有哪些?

  • @ConfigurationProperties
  • @SpringBootApplication
  • @EableAutoConfiguration
  • SpringBootConfiguration

11.AOP的通知有哪些类型,AOP的实现原理?

前置,后置 ,环绕,异常,最终

AOP的实现原理:动态代理模式,从容器获得对象时,判断是否被切中,未切中返回原始对象,切中判断是否实现接口,实现接口使用jdk动态代理,否则使用cglib