spring的学习(二)

    xiaoxiao2021-03-25  78

    对象的创建时机:

     

    执行的步骤:13 2 

      

    以上两种情况是默认值,当spring容器启动的时候创建对象

     

    bean里面的lazy-init属性:   

        

          Default 相当于false   spring容器启动的时候,创建对象

          Truecontext.getBean时创建对象

           Falsespring容器启动的时候创建对象

    意义:如果把lazy-init设置为true,则spring容器再启动的时候检测不到任何错误,这样存在很大的安全隐患,所以一般设置成false或者default但是如果一个bean中有一个属性,该属性含有大量的数据,这个时候不希望该bean过早的停留在内存中。

    这个时候需要用到lazy-inittrue

     

    对象的作用域:

    默认情况下(scope=singleton):放入到spring中的bean是单例的,将来service层和dao层所有的类都将放入到spring容器中,所以默认情况下这两层的类的实例都是单例的,所以不能把数据声明到属性中。如果声明到属性中,就会成为共享的。

    scope=prototype(每次调用创建新的bean对象)

    创建时机和scope的结合:

    scope=prototypelazy-init=true:在context.getBean的时候创建对象

    scope=prototypelazy-init=false:在context.getBean的时候创建对象,lazy-init=false失效。当scope=prototype时,始终是context.getBean的时候创建对象

    因为Scopseprototype,这个实例就变为多例的,lazy-init如果为false,一开始就创建该实例是没有意义的,所以这时候lazy-init默认为true;

    scope=singleton:是默认情况

    initdestroy的方法:

    说明:

    1  init方法是由spring内部执行的

    2  只有当spring容器关闭以后才能执行destroy方法,spring容器一般情况下是不会关闭的。只有当web容器销毁掉的时候才可能关闭掉,所以只要一个对象在spring容器中,在spring容器关闭之前,会一直保留。

            3  如果一个bean的配置是scope”prototype”,则spring容器不负责销毁。    

       spring容器所做的事情:

    总结:

       创建对象

    1对象的创建方式

    2对象的创建时机

    3对象的创建的模式

    4Initdestroy

    5创建时机和创建模式的结合

       初始化和销毁

    转载请注明原文地址: https://ju.6miu.com/read-33294.html

    最新回复(0)