Spring理论

一、spring中两大核心概念:(讲一讲你对Spring的理解)

  1. IOC:IOC就是控制反转,就是将对象创建、销毁等等权限交给Spring容器去管理

    • DI:依赖注入:IOC的实现方式就是DI依赖注入,通过setter注入和构造器注入来实现依赖注入
  2. AOP:面向切面编程,在不改变原有业务逻辑的基础上,对原有功能进行增强(无入侵式)

    ​ 比如过滤器Filter的原理,就是实现了AOP思想

    ​ 比如PageHelper分页组件的原理,也是实现了AOP思想

    ​ 底层使用了的是代理模式

解释:

  1. 容器是什么?你看过Spring的容器吗?

    答:Map集合,

    ​ id:map集合的键

    ​ class生成的对象实例:map集合的值

  2. Spring的启动需要tomcat吗?

    答:不需要,换种说法:Spring可以管理web项目的Bean,也可以管理非Web项目的bean

    ​ 在换种说法:任何一个Java项目,都可以使用Spring管理Bean

  3. Spring在创建对象的过程中,会调用构造函数(方法)吗?

    答:Spring在创建对象的过程中,默认调用该对象的空参构造,如果重写了这个对象的构造,那必须要显式声明空参构造。

  4. DI依赖注入的方式:

    • setter注入:通过setter方法注入需要的数据
    • 构造器注入:通过构造方法注入需要的数据
  5. 什么代理模式?

    答:代理模式分为静态代码和动态代理,动态代理具体分为jdk动态代理和cglib动态代理

  6. jdk动态代理和cglib动态代理有什么区别?

    答:

    • jdk动态代理,被代理的类一定要有实现接口,如果没有接口,jdk动态代理是无法帮他生成代理类的
    • cglib动态代理,不需要被代理的类一定要有接口,他能对一个没有接口的类生成代理类
    • Spring-AOP默认采用的是jdk动态代理,但是当被代理对象没有实现的接口的时候,就用cglib动态代理生成代理对象
  7. 静态代理:

    案例:在执行save方法的前后,打印执行时间

    • 操作1:不使用代理模式的实现如下

在这里插入图片描述

  • 使用静态代理操作如下:
  1. Spring中如何使用代理模式呢?Spring中的AOP是如何实现的?

    • 通知/拦截器:对目标对象/方法进行增强
    • 前置通知/拦截器
    • 后置通知/拦截器
    • 环绕通知/拦截器
  2. Spring-AOP中的概念

    • 连接点:目标对象中的任意方法都称为连接点
    • 切入点:将会被增强的连接点,目标类中被增强的方法
    • 通知/拦截器:对切入点增强的内容
    • 切面:通知所在的类
    • 目标对象:被增强类

二 、Spring框架有哪些主要模块?

在这里插入图片描述

主要模块如下:

1.Spring Core:Spring框架的核心容器,他提供了Spring框架的基本功能。这个模块中提供了组件生命周期的管理,组件的创建,装配以及销毁等功能;
2.Spring AOP:采用了面向切面编程的思想,使Spring框架管理的对象支持AOP,同时这个模块也提供了事务管理,可以将事务管理集成到应用程序中;
3.Spring Context:扩展核心容器,提供了Spring上下文环境,给开发人员提供了很多非常有用的服务,例如国际化,Email等;
4.Spring Web MVC:提供了一个构建Web应用程序的MVC的实现
5.Spring ORM:提供了对现有的ORM框架的支持,例如Mybatis等;
6.Spring DAO:提供了对DAO(Data Access Object,数据访问对象)模式和JDBC的支持。

三、Spring Bean的作用域(作用范围)之间有什么区别?

1.singleton:单例,默认值,在Spring IoC容器只有一个Bean实例;
2.prototype:多例,每次从容器中获得Bean时,都返回一个新的实例;

四、Bean的证明周期:
在这里插入图片描述

简化:

Spring Bean生命周期共分10个步骤,简述如下:
1.实例化:实例化一个Bean
2.注入:按照Spring上下文对实例化的Bean进行依赖注入
7.初始化:自动调用init-method初始化方法
//此处就是项目中使用的bean
10.销毁:当bean不再需要时,执行销毁方法destroy-method

五、Spring中的注解有哪些?

1.在指定类中添加指定注解,配置类添加@ComponentScan注解进行包扫描,就可以完成bean的配置。
2.相关注解
@Component 通用组件类
@Controller 用于配置web层的controller类
@Service 用于配置service层的service类
@Repository 用于配置dao层dao类
@Bean 用于配置第三方实例,只能修饰方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值