1. bean scope
- bean scope 属性用于决定对象何时被创建与作用范围。
- bean scope 配置将影响容器内对象的数量。
- bean scope 默认值singleton(单例),指全局共享同一个对象实例。
但是单例会存在线程安全问题,当scope=prototype时,bean会处于多实例状态,每个bean id会对应自己的实例对象。prototype在容器中多实例,占用资源更多,不存在线程安全问题。
singleton | prototype | |
---|---|---|
对象数量 | 全局唯一 | 存在多个 |
实例化时机 | IoC容器启动时 | getBean()或对象注入时 |
线程安全问题 | 存在 | 不存在 |
执行效率 | 高 | 低 |
某一个属性在程序运行中是稳定不变的,就设置为单例模式,如果是不断变化的,那就设置为多例模式