失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Spring框架—IoC容器

Spring框架—IoC容器

时间:2022-11-07 17:34:37

相关推荐

Spring框架—IoC容器

首先我们需要了解一下是什么是IoC。IoC是Spring的核心技术之一,全称是Inversion of Control(控制反转)。最原始的创建对象的方法就是通过new来实现(手动的编写代码实现),而Spring提供了Ioc容器用于对象的创建以及配置、管理、销毁等。

容器启动的时候,读取配置文件,基于配置文件的信息初始化(创建)对象。容器一启动就创建对象的好处是:使用的时候就不用创建了,直接从容器中获取比使用时创建性能好。弊端是:不使用对象但是创建了对象,占用内存。

newHollow();

当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象,这样做降低了类之间的耦合程度。不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

一、容器?

从程序的角度,容器实际上就是某些特定接口的实现类的实例。spring容器可归为两类:

BeanFactory容器:bean工厂(org.springframework.beans.factory.BeanFactory), 提供简单DI支持ApplicationContext容器:应用上下文(org.springframework.context.ApplicationContext),基于BeanFactory构建,并提供框架服务,如配置解析,主流使用的是功能更加强大的应用上下文(ApplicationContext)

二、Spring BeanFactory 容器

BeanFacotry是spring中比较原始的Factory。如XMLBeanFactory就是一种典型的BeanFactory。原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。ApplicationContext接口,它由BeanFactory接口派生而来,ApplicationContext包含BeanFactory的所有功能,通常建议比BeanFactory优先。

代码:

public interface BeanFactory {String FACTORY_BEAN_PREFIX = "&";Object getBean(String var1) throws BeansException;<T> T getBean(String var1, Class<T> var2) throws BeansException;Object getBean(String var1, Object... var2) throws BeansException;<T> T getBean(Class<T> var1) throws BeansException;<T> T getBean(Class<T> var1, Object... var2) throws BeansException;<T> ObjectProvider<T> getBeanProvider(Class<T> var1);<T> ObjectProvider<T> getBeanProvider(ResolvableType var1);boolean containsBean(String var1);boolean isSingleton(String var1) throws NoSuchBeanDefinitionException;boolean isPrototype(String var1) throws NoSuchBeanDefinitionException;boolean isTypeMatch(String var1, ResolvableType var2) throws NoSuchBeanDefinitionException;boolean isTypeMatch(String var1, Class<?> var2) throws NoSuchBeanDefinitionException;@NullableClass<?> getType(String var1) throws NoSuchBeanDefinitionException;String[] getAliases(String var1);}

getBean方法:从容器中获取Bean对象is方法:bean类型的判断get方法:获取Bean类型和别名

三、ApplicationContext 的主要实现类

ClassPathXmlApplicationContext:从 类路径下加载配置文件FileSystemXmlApplicationContext: 从文件系统中加载配置文件ConfigurableApplicationContext:扩展于ApplicationContext,新增加两个主要方法:refresh() 和 close(), 让ApplicationContext 具有启动、刷新和关闭上下文的能力ApplicationContext:在初始化上下文时就实例化所有单例的 Bean。WebApplicationContext: 是专门为 WEB 应用而准备的,它允许从相对于 WEB 根目录的路径中完成初始化工作

直白一点,就是五种常见加载方式 Application context = new 某种Context(参数传资源位置: 如"a.b.c.class" / "F:/config.xml" / "config.xml" 等等)

如果觉得《Spring框架—IoC容器》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。