温州网站推广,防城港网站设计公司,小程序模板套用教程,正保建设工程教育网站IoC按名称查找共分为三类#xff1a;
按名称按类型按集合
按名称查找
在Spring Framework中#xff0c;实时加载和延迟加载是指在容器启动时是否立即实例化bean的不同策略。下面我们将分别介绍这两种加载方式及其应用场景。
tips:
当涉及到懒加载和延时加载时#xff0…IoC按名称查找共分为三类
按名称按类型按集合
按名称查找
在Spring Framework中实时加载和延迟加载是指在容器启动时是否立即实例化bean的不同策略。下面我们将分别介绍这两种加载方式及其应用场景。
tips:
当涉及到懒加载和延时加载时需要明确它们实际上是不同的概念。
懒加载Lazy Loading 是指在需要使用某个资源或对象时才进行加载而不是在应用程序启动时就提前加载。这意味着直到第一次访问该资源或对象之前它都不会被加载到内存中。懒加载可以帮助减少启动时间和内存占用。
延时加载Delayed Loading 则是指在特定条件下推迟 [Something went wrong, please try again later.]
前提
请先在resource目录下新建文件:dependency-lookup-context.xml并配置
?xml version1.0 encodingUTF-8?
beansxmlnshttp://www.springframework.org/schema/beansxmlns:contexthttp://www.springframework.org/schema/contextxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd#实时加载bean iduser classorg.thinging.in.spring.ioc.overview.domain.Userproperty nameid value1/property namename valueLiutx//bean#延时加载bean idobjectFactory classorg.springframework.beans.factory.config.ObjectFactoryCreatingFactoryBeanproperty nametargetBeanName valueuser//bean/beans实时加载Eager Loading
实时加载是指在Spring容器启动时就立即实例化所有的bean。具体来说在使用ApplicationContext作为容器时如果不显式地配置为延迟初始化那么所有的单例bean都会在容器启动时被实例化。实时加载能够确保在应用程序运行过程中所有需要使用的bean都已经被创建并准备就绪。
//实时加载 配置xml配置文件
BeanFactory beanFactory new ClassPathXmlApplicationContext(META-INF/dependency-lookup-context.xml);
lookUpInReal(beanFactory);/*** BeanFactory按名称实时查找* param beanFactory bean工厂对象*/
private static void lookUpInReal(BeanFactory beanFactory) {//启动Spring上下文User user beanFactory.getBean(user, User.class);System.out.println(user);
}测试
public class DependecyLookUpDemo {public static void main(String[] args) {//实时加载 配置xml配置文件BeanFactory beanFactory new ClassPathXmlApplicationContext(META-INF/dependency-lookup-context.xml);lookUpInReal(beanFactory);}
}
java## 延迟加载Lazy Loading延迟加载是指在Spring容器启动时并不立即实例化所有的bean而是在首次访问该bean时才进行实例化。这种方式可以节省资源并且对于某些特定情况下并不总是需要使用的bean来说也能提高启动速度。java
/*** BeanFactory按名称延时查找* param beanFactory bean工厂对象*/
private static void lookUpLazy(BeanFactory beanFactory) {ObjectFactoryUser objectFactory (ObjectFactoryUser) beanFactory.getBean(objectFactory);User userLazyLoad objectFactory.getObject();System.out.println(延迟查找 userLazyLoad);
}public class DependecyLookUpDemo {public static void main(String[] args) {//实时加载 配置xml配置文件BeanFactory beanFactory new ClassPathXmlApplicationContext(META-INF/dependency-lookup-context.xml);lookUpLazy(beanFactory);}
}测试 应用场景和优缺点
实时加载的应用场景 当所有的bean都是必须在应用程序启动时就准备好的且对启动时间没有特别要求时可以选择实时加载。实时加载能够在应用程序运行时尽快暴露出潜在的配置错误有助于提早发现问题。 延迟加载的应用场景 当部分bean是可选的或在应用程序的运行过程中并不总是需要使用时可以选择延迟加载。对于某些资源密集型的bean延迟加载能够减少启动时间和内存占用。 优缺点比较 实时加载可以在应用程序启动时立即发现配置问题但可能增加启动时间和内存占用。延迟加载可以减少启动时间和内存占用但在首次访问时可能会引入一些性能开销。
在实际应用中根据具体的需求和场景来选择合适的加载方式是非常重要的。
后续内容文章持续更新中…
近期发布。 关于我
你好我是Debug.c。微信公众号种颗代码技术树 的维护者一个跨专业自学Java对技术保持热爱的bug猿同样也是在某二线城市打拼四年余的Java Coder。
在掘金、CSDN、公众号我将分享我最近学习的内容、踩过的坑以及自己对技术的理解。
如果您对我感兴趣请联系我。
若有收获就点个赞吧喜欢原图请私信我。