剛學spring以及spring boot框架,有一個問題困惑我:
如果使用了spring或spring boot框架,在代碼中如果我需要用某一個bean 我就不需要自己去new一個,容器會替我做這個事情,對吧?
但是,如果我所需要的bean 已經持久化了,這個bean 還是會交給容器去管理嗎?
另一種情形是一個new的bean 依賴一個已經持久化了的bean ,還是由容器來裝配和管理嗎?
剛學spring以及spring boot框架,有一個問題困惑我:
如果使用了spring或spring boot框架,在代碼中如果我需要用某一個bean 我就不需要自己去new一個,容器會替我做這個事情,對吧?
但是,如果我所需要的bean 已經持久化了,這個bean 還是會交給容器去管理嗎?
另一種情形是一個new的bean 依賴一個已經持久化了的bean ,還是由容器來裝配和管理嗎?
先说下第一个问题,Spring 和 SpringBoot 的关系,先有 Spring 再有 SpringBoot 的,后者是对 Spring 的简化,核心还是 Spring 。Spring 的本质是一个 Bean 工厂,它实例化对象时是根据 xml 配置来进行的,有懒加载的说法。你需要一个 实例的时候 通过 BeanFactory 的 getBean 就能得到一个对象,没错,是这个流程。它有几种创建模式单例、prototype 等类型。
第二个问题:持久化 Bean 应该是从数据库获取的或者手动创建后入库的,一般不会定义为 Spring 托管的类。
new 一个 Bean 的时候,依赖了 已经持久化的 Bean ,如果这些类在 Spring 的 配置文件中注册过了,且是通过 getBean 方式获取的,就是被Spring 管理,否则就不是。
还有一点就是,即使被容器托管的 bean ,你也是可以手动 new 这样一个对象,你自己创建的就跟容器没啥关系了,即容器提供实例创建服务,但是你可以选择不用的!