延迟加载的意义是什么,为什么需要延迟加载,请看这篇文章
浅析C#延迟加载的运行机制和应用场景
http://www.51testing.com/html/00/n-235500.html
关于这个,c#4.0 提供了一个包装类 Lazy<T>,这里有它的源码分析
http://www.cnblogs.com/me-sa/archive/2010/05/25/Lazy-initialization-Fx4.html
实际就是使用了单例模式,在给对象的属性赋值时才实例化对象,再次访问只是返回缓存的对象实例,所以说Lazy类看起来很神奇,但它只是个包装类而已
而Spring.net也有它自己的实现方式,当然这又离不开XML配置,在Spring.net下一般对象的创建都是在ApplicationContext启动时提前被实例化,如果要延迟加载需要lazy-init="true",如下所示
<object id="lazy" type="MyCompany.ExpensiveToCreateObject, MyApp" lazy-init="true"/>
另外可以在容器级别直接定义延迟加载,这样在里面定义的对象全部都是延迟加载的
<objects default-lazy-init="true">
<!-- no objects will be pre-instantiated... -->
</objects>