spring多线程获取不到bean_面试回顾-Spring相关复习

Spring

  • 什么是SpringIOC 控制反转
  • 优点
  • SpringCore 最核心的部分
  • 控制反转是降低对象之间耦合关系的思想,一般来说就是上层调用下层,上层依赖下层,调用者依赖被调用者!
  • 通过Ioc 可以提高系统的可扩展性,通过IOc容器开发人员就不用关注对象如何被创建的1
  • 缺点
  • 对象是通过反射创建出来对程序的性能有点影响
  • 创建对象的流程变得复杂
  • 什么是DI
  • 依赖注入自身对象中的内置对象是通过注入的方式进行创建
  • Ioc是一种软件设计思想 di就是设计思想的具体实现
  • IOC DI DL 的关系
90766cfac4b34c3a8636f3ba8a700d32
  • image-20190602112438074
  • 依赖注入的方式
  • setter(set方法)
  • Interface (接口)
  • Constructor (基于构照函数)
  • Annotation (基于java注解)
b8ac249d5884419bbaa4ef4fecbed39d
  • image-20190602112722935
  • IOC 容器的优势
  • 避免各处new 对象实例 并且可以做到统一维护
  • SpringIOC 支持哪些功能
  • 依赖注入
  • 依赖检查
  • 自动装配
  • 支持集合
  • 初始化方法和销毁方法
  • 支持回调方法
  • 什么是Aop
  • Aop 面向切面编程 是面向对象的一种扩展补充
  • 它允许在不改变原来业务逻辑的基础上可以动态增强
  • SpringAop
dacfdd168ba24c109f25c7aa517f6d8a
  • image-20190602120140099
  • SpringAop 通知类型
266d217315bc44cdb79e948728190aa0
  • image-20190602120215198
  • SpringBean 的有哪几种作用域
  • Singleton:单例模式
  • Spring IoC 容器中只会存在一个共享的 Bean 实例,无论有多少个 Bean 引用它,始终指向同一对象。该模式在多线程下是不安全的。Singleton 作用域是 Spring 中的缺省作用域,也可以显示的将 Bean 定义为 singleton 模式,配置为:
  • Prototype :原型模式
  • 每次通过 Spring 容器获取 prototype 定义的 bean 时,容器都将创建
  • 一个新的 Bean 实例,每个 Bean 实例都有自己的属性和状态,而 singleton 全局只有一个对
  • 象。根据经验,对有状态的 bean 使用 prototype 作用域,而对无状态的 bean 使用 singleton
  • 作用域。
  • Request :一次request 一个实例
  • 在一次 Http 请求中,容器会返回该 Bean 的同一实例。而对不同的 Http 请求则会产生新的 Bean,而且该 bean 仅在当前 Http Request 内有效,当前 Http 请求结束,该 bean
  • 实例也将会被销毁
  • session :sessiom
  • 在一次 Http Session 中,容器会返回该 Bean 的同一实例。而对不同的 Session 请求则会创建新的实例,该 bean 实例仅在当前 Session 内有效
  • global Session :
  • 在一个全局的 Http Session 中,容器会返回该 Bean 的同一个实例,仅在
  • 使用 portlet context 时有效
  • SpringBean 的生命周期
  1. 实例化一个Bean
  2. 按照 Spring 上下文对实例化的 Bean 进行配置,也就是 IOC 注入。
  3. 如果这个 Bean 已经实现了 BeanNameAware 接口,会调用它实现的 setBeanName(String) 方法,此处传递的就是 Spring 配置文件中 Bean 的 id 值
  4. 如果这个 Bean 已经实现了 BeanFactoryAware 接口,会调用它实现的 setBeanFactory,setBeanFactory(BeanFactory)传递的是 Spring 工厂自身(可以用这个方式来获取其它 Bean,只需在 Spring 配置文件中配置一个普通的 Bean 就可以)
  5. 如果这个 Bean 已经实现了 ApplicationContextAware 接口,会调用
  6. setApplicationContext(ApplicationContext)方法,传入 Spring 上下文(同样这个方式也
  7. 可以实现步骤 4 的内容,但比 4 更好,因为 ApplicationContext 是 BeanFactory 的子接口,有更多的实现方法)
  8. 如果这个 Bean 关联了 BeanPostProcessor 接口,将会调用
  9. postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProcessor 经常被用作是 Bean 内容的更改,并且由于这个是在 Bean 初始化结束时调用那个的方法也可以被应用于内存或缓存技术。
  10. 如果 Bean 在 Spring 配置文件中配置了 init-method 属性会自动调用其配置的初始化方法。
  11. 如果这个 Bean 关联了 BeanPostProcessor 接口,将会调用
  12. postProcessAfterInitialization(Object obj, String s)方法。
  13. 注:以上工作完成以后就可以应用这个 Bean 了,那这个 Bean 是一个 Singleton 的,所以一般情况下我们调用同一个 id 的 Bean 会是在内容地址相同的实例,当然在 Spring 配置文件中也可以配置非 Singleton。
  14. 当 Bean 不再需要时,会经过清理阶段,如果 Bean 实现了 DisposableBean 这个接口,会调 用那个其实现的 destroy()方法;
  15. 最后,如果这个 Bean 的 Spring 配置中配置了 destroy-method 属性,会自动调用其配置的 销毁方法。
  • SpringMVC 的运行流程
  1. 用户通过浏览器发送请求到DispatherServlet 控制器
  2. 如果配置了拦截器 先通过拦截器的处理 只要返回True 才能运行以下步骤
  3. 控制器通过请求到HandleMapper 映射器 中寻找具体处理器
  4. 如果拦截器中设置了前置方法先调用拦截器的前置方法
  5. HanMapper 映射器 在通过具体的适配器去调用处理器
  6. 如果拦截器中设置了处理后置方法先调用拦截器的后置方法
  7. 通过适配器调用的映射器返回ModelAndView 视图再通过执行链返回到DispatherServlet中
  8. DispatherServlet 控制器将视图传给ViewResolver视图解析器解析
  9. ViewResolver 视图解析器解析完毕返回一个完整的视图给DispatherServlet 控制器
  10. DispatherServlet 控制器 拿到完整的视图渲染后响应给用户
  • MVC 有哪些常用注解
  • 在方法上的注解
  • @ResponseBody 异步请求 在方法上
  • @RequesMapping 处理请求映射路径的注解 在方法上
  • @AuToWired 对成员变量 方法以及构造函数进行标注,完成自动配置的工作
  • @pathvariable 用去取出URL 中传入的参数
  • @requestParam 用于SpringMVC 后台获取获取参数 和request.getParment(“”);x相同效果
  • 在类上注解
  • @Controller 加入spring容器中 标志位控制层组件
  • @RestController 相当于resonseBody 和Controller 组合注解 表示将所有的控制器返回值转换为Json 数据
  • @Service 用于标注业务层
  • @Repository 用于注解Dao层 在Dao 的实现类上注解
  • @Component 泛指组件 当组件不好归类的时候使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值