Java面试题

1.什么是IOC

1.1 IOC是控制反转,核心要素是控制什么以及反转什么。

1.2 IOC实现的方式:依赖注入以及依赖查找。

1.3 IOC是一容器用于管理

Bean的创建,销毁以及依赖关系;其中IOC控制的Bean的创建,销毁以及依赖查找,并将设计好的对象交由容器控制;IOC反转是将Bean的控制权(创建,销毁以及查找依赖)交给容器控制。

1.4 DI:依赖注入

注入方式包括:接口注入,setter注入(通过setter方法注入属性),构造注入(通过构造方法注入属性),名称空间注入(Spring中的一种实现注入的方式,依赖于setter注入或者构造注入,依赖于setter注入的实现时P名称空间注入,依赖于构造注入的实现是C名称空间注入)。

1.5 spring管理Bean的方式 

1)通xml配置文件管理Bean

2)注解

3)Java Configuration

1.6 spring初始化容器的三种方式

1)根据类路径xml配置文件初始化容器:ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("xml-path")

2)根据Java Configuration配置类初始化容器:ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("xml-path")

3)根据外部xml配置文件初始化容器:FileSystemXmlApplicationContextcontext = new FileSystemXmlApplicationContext("xml-path")

1.7 Spring中Bean名称的生成策略

默认的生成策略,使用xml注册Bean,有id时,Bean名称默认与id一致,无id时,默认使用类名首字母小写作为Bean名称;使用注解注册Bean,显式的指定Bean名称,不指定时,默认采用类名首字母小写作为Bean名称。

1.8 spring中bean的作用域

    当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域:

1)singleton:单例模式,在整个容器中,使用singleton定义的Bean将只有一个实例;

prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例;

2)request(http请求):对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例;只有在Web应用中使用Spring时,该作用域才有效;

3)session(会话):对于每次HTTP Session,使用session定义的Bean都会产生一个新实例,同样只有在Web应用中使用Spring时,该作用域才有效;

4)globalsession(全局会话):每个全局的HTTP Session,使用session定义的Bean都将产生一个新实例,典型情况下,仅在使用portlet context的时候有效,同样只有在Web应用中使用Spring时,该作用域才有效。

其中比较常用的是singleton和prototype两种作用域。对于singleton作用域的Bean,每次请求该Bean都将获得相同的实例。容器负责跟踪Bean实例的状态,负责维护Bean实例的生命周期行为;如果一个Bean被设置成prototype作用域,程序每次请求该id的Bean,Spring都会新建一个Bean实例,然后返回给程序。在这种情况下,Spring容器仅仅使用new 关键字创建Bean实例,一旦创建成功,容器不再跟踪实例,也不会维护Bean实例的状态。

如果不指定Bean的作用域,Spring默认使用singleton作用域。Java在创建Java实例时,需要进行内存申请;销毁实例时,需要完成垃圾回收,这些工作都会导致系统开销的增加。因此,prototype作用域Bean的创建、销毁代价比较大。而singleton作用域的Bean实例一旦创建成功,可以重复使用。因此,除非必要,否则尽量避免将Bean被设置成prototype作用域。

不断更新中,后续见:https://kdocs.cn/l/cgB8dJRQXqkL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值