Spring八股

Spring

  • 什么是Spring?
    Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的框架

  • Spring的优点/特性?
    IoC和DI支持
    AOP 面向切面编程
    声明式事务支持:支持通过配置来完成事务的管理。
    快速集成测试:集成junit,可以通过注解测试Spring功能
    快速集成功能:方便集成各种优秀框架
    复杂的API模板封装:对一下复杂的API(JDBC、远程调用等)提供了模块化的封装方法

  • Spring 有哪些模块呢?
    主要七大模块:
    Spring Core:核心模块,主要提供对 IoC 和 DI 的特性
    Spring Context:Spring的上下文容器,BeanFactory功能加强的子接口
    Spring Web:提供对Web应用开发的支持
    Spring MVC:提供Web应用中MVC思想实现的支持
    Spring DAO:提供对JDBC抽象层的支持,简化了JDBC代码
    Spring ORM:提供对ORM框架的支持,例如ibatis、Hibernate
    Spring AOP:提供AOP编程特性

  • Spring 有哪些常用注解呢?
    Web方面:@RequestMapping(GetMapping、PostMapping、DeleteMapping、PutMapping):映射URL 请求到具体的方法上
    @ResponseBody :方法返回值填入HTTP响应正文中,一般用于凤凰JSON数据
    @RequestBody :表示一个方法的参数应该绑定WEB请求体
    @PathVariable :用于接收路径参数 @RequestMapping(“/hello/{name}”)
    @RequestParam: 用于接收请求参数 @RequestParam(name = "key") String key
    @Controller : 标注控制层组件
    @RestController :ResponseBody和Controller 结合体,返回JSON数据时使用
    容器方面:@Value:用于将 Spring Boot 中 application.properties 配置的属性值赋值给变量
    @Component:将一个类标记为Spring组件,能够被Spring容器扫描和管理
    @Autowired:按类型自动注入依赖
    @Service:标记一个服务层组件
    @Configuration:定义一个配置类,可替换XML配置文件
    @Repository:标记一个持久层组件
    AOP方面:
    @Aspect:定义一个切面
    @PointCut:定义一个切点,指点拦截的方法
    @After:方法执行之后执行
    @Before:方法执行之前执行
    @Around:方法执行前后都执行
    事务:@Transactional:声明一个方法需要事务支持

IOC

  • 什么是IOC/DI?
    IOC(控制反转)一种设计思想,由容器来控制对象的生命周期和对象之间的关系。在Spring中,由IOC容器去创建类,而不是去new 一个类,并且创建和销毁工作都由容器完成。对于一个类来说,以前是由类自己来创建管理他依赖的类,现在是由容器来管理,所以是控制反转。
    DI(依赖注入),由容器动态的将依赖关系注入到组件当中,例如类A依赖类B,类A运行时,容器会自动将类A运行所需要的类B注入到类A中。DI的实现主要依赖于反射机制。DI可以理解为IOC的实现,不同的角度描述同一件事。关于DI和IOC更详细理解可以参考https://www.cnblogs.com/xdp-gacl/p/4249939.html
  • 能简单说一下 Spring IoC 的实现机制吗?你有自己实现过简单的 Spring 吗?
    Spring IoC 的本质就是一个大工厂,工厂运行总体分为3个部分,工厂本身,订单,库房。
  1. 工厂本身生产产品,也就是Spring通过反射实例化Bean。工厂本身的生产管理通过工厂模式来实现
  2. 订单,也就是工厂生产产品的依据,Spring里Bean的定义和依赖。一般是注解或 xml 文件
  3. 库房就是 IoC 容器,实例化的Bean存放在 IoC 容器里
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值