Spring黑马笔记入门三
来源:互联网 发布:ubuntu lamp环境 编辑:程序博客网 时间:2024/05/18 21:10
别名
这个就很简单,给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黑马笔记入门七
- Spring黑马笔记入门八
- Spring黑马笔记入门九
- FreeMarker入门笔记三之spring整合
- Spring入门笔记(三)之JdbcTemplate和事务管理
- Spring入门笔记(三)Bean--Aware、自动装配、Resources
- 黑马笔记总结(三)
- 黑马外卖笔记(三)
- 黑马程序员--入门基础三
- perl入门笔记(三)
- Python入门笔记三
- Spring入门笔记
- spring 入门学习笔记
- JAVA提高篇(22)--StringReader和StringWriter的用法
- Linux 中 grep 命令的 12 个实践例子
- 基于MPI的文档分类并行程序设计(C)
- Java中值传递和引用传递的区别
- JDBC的连接
- Spring黑马笔记入门三
- 全选和反选
- listview(从网上获取数据)
- java中重载与重写的区别
- Mac下安装虚拟机出现内部错误的解决方案及原因
- 点击地图获取经纬度(基于腾旭地图api)
- 不规则窗口和控件的封装(win32 API)——TinyDlg
- 测试文章发送
- oracle聚合函数