1.介绍下Spring,有哪些主要模块
spring是开源轻量级的控制反转和面向切面的容器框架
- 轻量级是指它的开销和大小小
- 控制反转(IOC)是将创建对象的过程交个容器来完成和管理对象的生命周期
- 面向切面(AOP)是将业务逻辑和系统级服务分开
- 容器来创建对象和管理对象的生命周期
- 框架将第三方框架整合起来
主要模块
- 核心容器
- Core 核心组件 IOC功能
- Context 上下文组件 包的扫描
- Beans JavaBean的生命周期管理
- sqel spring表达式
- 面向切面编程
- AOP 面向切面编程
- Aspect 提供了切入点表达式支持
- 数据访问和基础模块
- JDBC JDBC支持
- ORM 对象映射模型的数据库
- Transactions 事务支持
- Web支持
- Web 提供web应用上下文
- WebMVC 全功能的构建web应用的mvc实现
2.讲解IOC和AOP? *
IOC是一个程序设计思想,既控制反转,控制即容器可以对java对象进行管理和创建,反转即是对象由容器创建提供给我们,而不是由我们创建,作用可以减少代码的耦合,减少了代码之间的依赖性
原理:工厂模式(管理和创建对象),反射(创建对象,属性注入)
AOP即面向切面编程,是OOP的补充,主要可以在不改变原来的代码情况下,给代码添加新的功能,可以将核心业务和非核心业务分离开来 场景:日志 事务 权限 性能监控
原理:动态代理
3.IOC注入的几种方式?
- set方法注入,用property标签配置
- 构造方法注入
- 自动装配,autowire属性
4.自动装配的几种方式?
- default/no 默认不装配
- byName 通过id或name查找
- bytype:通过class类型查找
- 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