Spring黑马笔记入门三
2017-10-08 09:24
375 查看
别名
这个就很简单,给bean起个外号,在容器中使用别名就能够调用此类中的方法。通过在xml文件中统一配置,我们就可以在不同的地方使用不同的名字来使用bean。创建对象的时机
可以使用设置断点的方式 来判断对象的启动顺序上课如果集中不了精力,使劲写注释
默认的情况下,都是在启动spring容器的时候,创建对象
一种情况 在getbean的时候创建对象。
lazy-init="default/true/faulse"指的是懒加载
那么问题来了,这两种方式的区别是,换句话说懒加载的好处是什么:
我们在具体使用的时候,是不是要写很多配置文件?在容器创建的时候被发现呢,还是在被调用的时候发现有问题?所以我们使用的时候 都是默认启动spring容器的时候调用,这样的话就会去找这个类,如果没有找到就报错,如果你使用了lazy-init=true的话,只有在请求的时候才会发现有错误。
一个对象在容器中是多实例的还是单实例的是不是得搞清楚?
怎搞清楚,看对象的hash码是不是一样的。默认的是单实例的
如果说scope属性为 prototype Spring产生的对象就是多实例的,ok,
线程安全
那么多实例与单实例有什么区别呢?
假设我在类中声明一个集合 那么这个集合就是共享集合action dao service要全部放到spring容器当中,而且service 和dao都是单实例的,而struts2的action是多实例的每次请求都会产生新的对象。
比如 我dao假设返回一个集合,记得绝对不能要把集合声明到属性里,这样的话这个集合就变成共享集合了,就变成全局的了。这么做是很危险的,当然如果你的属性变成prototype类型的就不会有这个问题了。因为你的是多实例的,对象就不同了。如果将来在struts2和spring整合的时候,不是spring一启动容器的时候创建对象,而是当浏览器发起一个url请求的时候,它才会让spring容器创建Action,而此时action必须为多实例的。无论lazy-init是什么值,都是在content.getBean时才会创建对象。
图11
图12
service和dao层为啥时单实例呢 ?
那么 如果1000次请求,1000个service 1000个dao jvm疯了!
为啥struts2就能多实例,人家底层就是这样干的
相关文章推荐
- Spring黑马笔记入门四
- Spring黑马笔记入门五
- Spring黑马笔记入门六
- Spring黑马笔记入门二
- Spring黑马笔记入门八
- Spring黑马笔记入门九
- SpringCloud踩坑实战笔记(入门篇)
- Spring Cloud 学习笔记——入门、特征、配置
- spring入门学习笔记第三课--spring的注入
- Spring学习笔记:Spring中IoC的入门实例
- Spring学习笔记2:springMVC2 1入门程序
- Spring 入门知识点笔记整理
- Spring学习笔记-入门篇
- Spring4 学习笔记(1)-入门及 HelloWorld
- Spring入门-学习笔记
- Spring学习笔记(三)AOP入门<原创>
- Spring Cloud 学习笔记——入门、特征、配置
- 超详细的Spring Boot入门笔记
- 超详细的Spring Boot入门笔记
- Spring入门学习笔记