1.使用spring给我们带来什么?
- 简化开发,代码解耦
- 声明式事务,提供transactionmanager
- 提供诸多的工具类,围绕spring生态,比如jdbctemplate,beanutil
- 提供了内置的解决方案,bop,ioc,aop
- 生态越来越丰富,易于和其他组件联合开发
- 。。。
2.beanfactory和applicationcontext的区别?
- applicationcontext是beanfactory的实现类
- beanfactory是顶层设计,applicationcontext是用户接口,拥有诸多方法,功能丰富
- 一般认为applicationcontext就是ioc容器,ioc功能实在defaultlistablefatory中实现
- 。。。
3.spring bean的生命周期
- singleton:从spring容器的启动到容器的关闭.如果是延迟加载,在调用前船舰对象
- prototype:在调用前创建,在调用后销毁。作用域决定了生命周期的长短
4.spring bean各作用域间的区别
- singleton:可以在任何地方通过ioc容器拿到
- prototype:全局的
- request:一次请求
- session:一个会话期,默认30min,浏览器关闭并不会立即失效
- globlesession:可以理解为容器中的一个应用
5.spring中的bean是否线程安全的?
问的是spring中的你写的bean是否是线程安全。bean是放在ioc容器中,所以,是否安全和spring无关,和你自己写的代码有关,无论是否是单例的
6.spring中用到了那些模式?
单例,享元模式,代理,建造模式,装饰器,门面模式,委派模式。。。
7.spring,springboot ,springcloud的区别
- spring已有的生态能够完成日常开发的所有任务,但是配置繁琐
- springboot:内置默认配置,我们需要的是覆盖配置,而不是从零开始。官方提供了脚手架,内置tomcat,不需要再部署容器。可打包jar直接运行
- springcloud:正式进军分布式,注册中心,服务发现,链路追踪,熔断,负载。。。打造一个生态,不需要自己整合,一站式
- springcloud 依赖springboot,springboot以来spring
8.spring中的事务怎么传播?事务如何挂起?
transactionmanager 代理模式。配置里需要提供datasource,采用连接池技术。挂起直接不用当前连接,重新获取新的连接就好。传播,获取多个连接,各做各的事。
9.beanfactory和factorybean的区别?
- beanfactory:ioc容器的顶层设计
- factorybean:用来构建bean的一个包装类
10.项目中用到aop的地方:
日志,权限管理,声明式事务,安全监控