1、BeanFactory和ApplicationContext有什么区别?
答:什么是SpringBeans,这是一个非常简单又很复杂的问题,通常来说,Springbeans就是被Spring容器所管理的java对象;什么是Spring容器,Spring负责实例化,配置和装配Spring beans;BeanFactory和ApplicationContext的不同点,BeanFactory接口是一个用来访问Spring容器的接口,要访问Spring容器,我们将使用Spring依赖注入功能,使用BeanFactory接口和它的子接口(特性:Bean的实例化/串联 通常情况下,BeanFactory的实现是使用懒加载的方式,这意味着Beans只有在我们通过getBean()方法直接调用它们时才进行实例化,实现BeanFactory最常用的API是XMLBeanFactory);ApplicationContext接口是Spring应用程序中的中央接口,用于向应用程序提供配置信息,它继承了BeanFactory接口,所以ApplicationContext包含BeanFactory的所有功能以及更多功能!它的主要功能是支持大型的业务应用的创建(特性:Bean instantiation/wiring;Bean的实例化/串联;自动的BeanPostProcessor注册;自动的BeanFactoryPostProcessor注册;方便的MessageSorce访问;ApplicationEvent的发布与BeanFactory懒加载的方式不同,它是预加载,所以,每一个bean都在ApplicationContext启动之后实例化);总的来说ApplicationContext包含BeanFactory的所有特性,通常推荐使用前者。但是也有一些限制情形,比如移动应用内存消耗比较严苛,在那些情景汇总,使用更轻量级的BeanFactory是更合理的。然而在大多数企业级的应用中,ApplicationContext是你的首选。
2、请解释下Spring框架中的IOC
答:Spring底层最核心的就是IOC(Inversion of control 控制反转)又叫DI(Dependecy Injection)了,依赖注入,让一个对象的创建不用在new了,可以自动的生产,这其实就是利用java里的反射在运行时,用Spring的xml配置文件来动态的创建对象和调用对象里的方法。依赖注入的方式有:设值注入(依赖get/set方法)、构造注入(依赖构造方法)、注解注入(@Component[分层不明确的情况下]、@Repository()[Dao层]、@Service()[Service层]、@Controller()[Action类,controller类]、@Scope指定bean作用的范围、@Autowired指定自动装配依赖、@Qualifier用@Autowired自动匹配时,如果有多个同类型对象则需要该注解指定注入Bean的名称、@Resource默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配)。
3、如何用基于Java配置的方式配置Spring?
答:Spring对java配置的支持是由@Configuration注解和@Bean注解来实现的。由@Bean注解的方法将会实例化、配置和初始化一个新对象,这个对象将由Spring的IOC容器来管理。@Bean声明所起到的作用与<bean/>元素类似。被@Configuration所注解的类则表示这个类的主要目的是作为bean定义的资源。被@Configuration声明的类可以通过在一个类的内部调研那个@Bean方法来设置嵌入bean的依赖关系。类中的方法名称相当于beans中的id,详情https://blog.csdn.net/weixin_42528266/article/details/102909450
4、Spring Bean的作用域之间有什么区别?
答:singleton : bean在每个Spring ioc 容器中只有一个实例。
prototype:一个bean的定义可以有多个实例。
request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。
session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
缺省的Spring bean 的作用域是Singleton。详情:https://www.cnblogs.com/hph1728390/p/11005470.html
5、请解释自动装配模式的区别?
答:在Spring框架中共有5种自动装配,让我们逐一分析。
原文:https://www.cnblogs.com/blackboc-java/p/12143928.html