深圳住房宝安和建设局网站,宏大建设集团网站,什么叫商业网站,wordpress页面美化spring容器 实现方式 spring中提供了各式各样的IOC容器的实现供用户选择和使用#xff0c;使用什么样的容器取决于用户的需要 BeanFactory 该接口是最简单的容器#xff0c;提供了基本的DI支持。最常用的BeanFactory实现是XmlBeanFactory类#xff0c;根据XML文件中的定义加… spring容器 实现方式 spring中提供了各式各样的IOC容器的实现供用户选择和使用使用什么样的容器取决于用户的需要 BeanFactory 该接口是最简单的容器提供了基本的DI支持。最常用的BeanFactory实现是XmlBeanFactory类根据XML文件中的定义加载bean从XML文件读取配置元数据并用它去创建一个完全配置的系统或应用 public interface BeanFactory { // 可以使用来得到FactoryBean本身用于区分用FactoryBean产生的对象和FactoryBean本身 // 如使用myJndiObject获取到的是FactoryBean产生的对象使用myJndiObject可以获取到对应的FactoryBean对象 String FACTORY_BEAN_PREFIX ; Object getBean(String name) throws BeansException; T T getBean(String name, ClassT requiredType) throws BeansException; Object getBean(String name, Object... args) throws BeansException; T T getBean(ClassT requiredType) throws BeansException; T T getBean(ClassT requiredType, Object... args) throws BeansException; boolean containsBean(String name); boolean isSingleton(String name) throws NoSuchBeanDefinitionException; boolean isPrototype(String name) throws NoSuchBeanDefinitionException; boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException; boolean isTypeMatch(String name, Class? typeToMatch) throws NoSuchBeanDefinitionException; Class? getType(String name) throws NoSuchBeanDefinitionException; String[] getAliases(String name);} ApplicationContext应用上下文 基于BeanFactory之上构建提供面向应用的服务并继承了资源消息事件环境工厂五种能力常见的实现方式 // 实现MessageSource接口可以支持不同的信息员支持国际化 // 实现ApplicationEventPublisher支持了事件机制 public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver ApplicationContext是一个接口大部分的方法实现由AbstractApplicationContext实现- ClassPathXmlApplicationContext 继承了AbstractXmlApplicationContext抽象类从**类路径**下的XML配置文件中**加载**上下文定义把应用上下文定义文件当做资源javaApplicationContext context new ClassPathXmlApplicationContext(application.xml);// this(new String[] {configLocation}, true, null);// refresh为trueparent为nullpublic ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, ApplicationContext parent) throws BeansException { super(parent); setConfigLocations(configLocations); if (refresh) { refresh(); // 触发了IOC容器的初始化 } } FileSystemXmlApplicationContext 读取文件系统下的XML配置文件并加载上下文定义 XmlWebApplicationContext 读取Web应用下的XML配置文件并装载上下文 AnnotationConfigApplicationContext: 注解方式 ConfigurableApplicationContext扩展于ApplicationContext接口新增了两个主要的方法refresh()和close()让ApplicationContext具有启动、刷新和关闭上下文的能力 WebApplicationContext专门为WEB应用准备的允许从相对于WEB根目录的路径中初始化上下文 spring容器 BeanFactory和ApplicationContext的区别 BeanFactory可以认为是bean集合的工厂类包含了各种bean的定义以便在接收到客户端请求时将对应的bean实例化是spring最底层的接口提供了最简单的容器的功能包含了bean生命周期的控制调用初始化方法和销毁方法其采取的是延迟加载第一次getBean时才会初始化 ApplicationContext继承了BeanFactory并进行了扩展在初始化上下文时就实例化所有单例的bean提供了支持国际化的文本消息MessageSource、统一的资源文件读取方式(扩展了ResourceLoader)、消息发送、事件机制(ApplicationEvent和ApplicationListener)等 BeanFactory采用的是延迟加载形式来注入Bean的即只有在使用到某个Bean时(调用getBean())才对该Bean进行加载实例化这样我们就不能发现一些存在的Spring的配置问题。而ApplicationContext则相反它是在容器启动时一次性创建了所有的Bean。这样在容器启动时我们就可以发现Spring中存在的配置错误。相对于基本的BeanFactoryApplicationContext 唯一的不足是占用内存空间。当应用程序配置Bean较多时程序启动较慢。 BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用但两者之间的区别是BeanFactory需要手动注册而ApplicationContext则是自动注册。 BeanFactory主要是面对与 spring 框架的基础设施面对 spring 自己。而 ApplicationContext 主要面对与 spring 使用的开发者。基本都会使用 ApplicationContext 并非 BeanFactory 。 BeanDefinition spring通过BeanDefinition来管理基于spring的应用中的各种对象以及它们之间的相互依赖关系。BeanDefinition抽象了对Bean的定义是让容器起作用的主要数据类型 https://zhhll.icu/2021/框架/spring/基础/2.spring容器/ 本文由 mdnice 多平台发布