spring知识总结

简介一下Spring框架。

1.Spring框架

答:Spring框架是一个开源的容器性质的轻量级框架。主要有三大特点:容器、IOC(控制反转)、AOP(面向切面编程)。

  1. Spring框架有哪些优点?谈谈你的看法。

答:Spring框架主要有三大优点:

(1) 容器。Spring框架是一个容器,能够管理项目中的所有对象。

(2) IOC(控制反转)。Spring将创建对象的方式反转了,从程序员自己创建反转给了程序。

(3) AOP(面向切面)。面向切面编程,简而言之,就是将纵向重复的代码横向抽取出来。Spring框架应用了面向切面的思想,主要体现在为容器中管理的对象生成动态代理对象。

  1. 什么是IOC?

答:IOC:控制反转,指得是将对象的创建权反转给Spring。作用是实现了程序的解耦合。、

  1. 什么是DI?

答:DI:依赖注入,需要有IOC环境,在Spring创建Bean对象时,动态的将依赖对象注入到Bean对象中去。依赖注入最大的好处就是解耦合。

  1. 你对Spring框架中的BeanFactory接口和ApplicationContext接口有什么理解?二者有什么区别?

答:BeanFactory接口是Spring框架的顶层接口,是最原始的接口,通过new (BeanFactory的实现类)来启动Spring容器时,并不会创建Spring容器里面的对象,只有在每次通过getBean()获得对象时才会创建。

ApplicationContext接口是用来替代BeanFactory接口的,通过new (ApplicationContext接口的实现类)ClassPathXmlApplicationContext来启动Spring容器时,就会创建容器中配置的所有对象。

  1. Spring中的工厂容器有哪两个,它们的区别是什么?

答:BeanFactory和ApplicationContext。

BeanFactory接口是Spring框架的顶层接口,是最原始的接口,ApplicationContext是对BeanFactory扩展,BeanFactory在第一次getBean时才会初始化Bean, ApplicationContext是会在加载配置文件时初始化Bean。

BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource(“applicationContext.xml”));

IHelloService helloService = (IHelloService) beanFactory.getBean(“helloService”);

helloService.sayHello();

  1. 谈谈你对Spring容器中Bean标签的理解。

答:Bean标签用来描述Spring容器管理的对象。

假如有一个User对象,需要交给Spring容器来管理,这样就需要在Spring容器的主配置文件中通过Bean标签来描述该对象。Bean标签常见的属性有以下几个:

name属性:给被管理的对象起个名称,获得对象时要根据该名称来获得。

class属性:被管理对象的完整类名。

scope属性:scope属性常见的有两个属性值,singleton和prototype,这两个属性值用 来指定创建对象时是单例还是多例,默认为singleton(单例),但在整合整合struts2 时,ActionBean必须配置为多例的.

  1. Spring通过配置标签来生成Bean对象有哪三种方式?

答:空参构造方式、静态工厂方式和实例工厂方式。一般都只会用空参构造方式。如下:

  1. Spring框架中属性注入有哪几种方式:

答:Spring中的输入注入方式包括set方法注入、构造函数注入、p名称空间注入、spel注入,除此之外,还包括复杂方式注入,如数组、List、Map、Properties等属性的注入。

  1. 简述一下bean的生命周期?

答:bean的生命周期包括bean的定义、bean的初始化、bean的调用和bean的销毁。

在配置文件里面通过来完成bean的定义,通过配置init-method属性来完成bean的初始化,通过得到bean的实例对象来完成bean的调用,通过配置destory-method属性来完成bean的销毁。

  1. 简述一下bean的作用域?

答:bean有5种作用域,分别是singleton(单例,默认)、prototype(默认)、request、session、globalSession。

singleton

当一个bean的作用域为singleton, 那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。

prototype

Prototype作用域的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean() 方法)时都会创建一个新的bean实例。根据经验,对所有有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用 singleton作用域

request

在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例, 它们依据某个bean定义创建而成。该作用 域仅在基于web的Spring ApplicationContext情形下有效。

session

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

global session

在一个全局的HTTP Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于 web的Spring ApplicationContext情形下有效。
12. 用注解将对象注册到Spring容器当中,有几种注解方式?它们有什么区别吗?

答:4种。分别是:@Component()、@Service()、@Controller()、@Respository()。

Spring框架最早出现的只有@Component()注解,但如果所有的对象都使用同一个注解,很难区分对象究竟属于哪一层架构。基于此,Spring又推出了@Service()、@Controller()、@Respository()三种注解,用于区分对象属于哪一层架构。但4种注解方式从功能上来说没有任何区别。

  1. Spring框架中,什么注解可以用来指定对象的作用范围?

答:@Scope(scopeName=”singleton”)。

  1. 如何用注解的方式来完成属性注入?

答:按类型分可以分为值类型注入和引用类型注入。

值类型注入可以通过@Value()注解来完成,该注解既可以声明在属性上,也可以声明在方法上,建议声明在方法上,但是更多的人会声明在属性上,因为更方便。

引用类型注入可以通过三种注解方式来完成,分别为:@Autowired、@Autowired和@Qualifier()二者结合、@Resource()。建议使用@Resource(),但是一般我都会用@Autowired。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值