Spring高频面试题大总结(二)——Beans

一、什么是Spring bean?Spring bean与Java bean有什么区别?

在 Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个由Spring IoC容器实例化、组装和管理的对象。

简单的来说就是:

1. bean是对象,一个或者多个不限定

2. bean由Spring中的IoC管理

区别:JavaBean是由自己实例化出来的,而bean的对象是由Spring的IOC容器创建出来的!

二、配置bean有几种方法?(4种)

(1)xml配置文件: <bean class="com.tuling.UserService" id="">

(2)注解@Component(@Controller 、@Service、@Repostory)

但是有一个前提:需要配置扫描包<component-scan> 

(3)javaConfig: @Bean 可以自己控制实例化过程

使用@Bean与使用@Component有什么区别???

  • @Component是Spring通过反射调用构造方法
  • @Bean是标注在方法上面,通常是与@Configuration配置类的注解一起使用,@Bean标注的方法必须有返回值,值为一个对象,该对象就是一个bean

(4)@Import 3种方式

三、解释Spring支持的几种bean的作用域

Spring框架支持以下五种bean的作用域:

我们可以通过@Scope()注解 和 xml中的scope属性进行配置

singleton : bean在每个Spring ioc 容器中只有一个实例

prototype:一个bean的定义可以有多个实例

request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring  ApplicationContext情形下有效。

session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring  ApplicationContext情形下有效。

application:全局 Web 应用程序范围的范围标识符。一个全局的应用共享一个对象

注意:

Spring bean 的作用域默认是Singleton

使用 prototype 作用域需要慎重的思考,因为频繁创建和销毁 bean 会带来很大的性能开销

四、单例bean的优势(单例设计模式的优势)

Spring的默认作用域就是(singleton)单例。

由于不会每次都新创建新对象所以有一下几个性能上的优势:

(1)减少了新生成实例的消耗,新生成实例消耗包括两方面,第一,spring会通过反射来生成bean实例这都是耗性能的操作,其次给对象分配内存也会涉及复杂算法。

单例bean提高了服务器内存的利用率 ,减少服务器内存消耗。

(2)减少jvm垃圾回收由于不会给每个请求都新生成bean实例,所以自然回收的对象少了。

(3)可以快速获取到bean,因为单例的获取bean操作除了第一次生成之外,其余的都是从缓存里获取的所以很快。

五、Spring实例化bean方式的几种方式 (wait......)

1. 构造器方式(反射);

2. 静态工厂方式; factory-method

3. 实例工厂方式(@Bean); factory-bean+factory-method

4. FactoryBean方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金鳞踏雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值