• spring中bean的一些知识点


    知识点1:

    实例化bean的3种方法。

    1.      使用类构造器 (90%用这个方法)   

    2.      使用静态工厂方法

    3.      使用实例化工厂

    知识点2:

    看这段代码

    ApplicationContextcontext=new ClassPathXmlApplicationContext("spring.xml");

        Person p=(Person) context.getBean("fish");

       

        p.setName("aaa");

        p.setId("13");

        System.out.println(p.getName()+p.getId());//结果是aaa 13

        Person p2=(Person) context.getBean("fish");

        p2.setName("bbb");

        p2.setId("14");

        System.out.println(p2.getName()+p2.getId()); //结果是bbb 14

        System.out.println(p.getName()+p.getId());//结果是bbb 14 

    这说明了一件事P=P2也就是说两个是同一个对象。

    那么如何让bean每次都创建不同的对象呢

    <bean id="fish"class="com.fish.Person" scope="prototype"></bean>

    在scope里面添加这个属性。这样就创建不同的对象了。

    所以这次相同的上面代码输出的结果是

    结果是aaa 13

    结果是bbb 14

    结果是aaa 13

    说明对象已经不是同一个了。

    这里说一下bean的作用域范围有singletonprototype,request,session

    如果是默认情况下singleton:在实例化容器的时候,你就bean中的类就已经被实例化了。

    但是如果是prototype:你在Person p2=(Person) context.getBean("fish");

    才会被实例化。

    当然我们可以通过手工的方法也可以延迟实例化的时间。

    lazy-init="true"

    如果spring不停止,那么bean就不会销毁。

     

    知识点3:对bean的属性如何依赖注入:

    1.     构造器赋值

     

    如何利用构造器赋值呢:

    <constructor-argindex="0" name="person" ref="fish" type="com.fish.Person"></constructor-arg>

     

    Index表示为第几个属性赋值。O表示第一个参数  name是你的属性名,ref是对引用类型赋值,type是值的类型,如果是一般类型就用value

    2.     利用set方法:在上面一篇《利用set方法的注入》已经详细说了。

    3.     利用field  用于注解方式

     

    依赖注入有两种方式,一种是手工装配,和自定装配。不过建议手工装配。

     

     

  • 相关阅读:
    Help document of CAD Build
    NSTableView 中 NSTextField无法输入
    NSScrollView 内容显示不正常问题
    Mac 中 NSTrackingArea 鼠标移动事件捕获
    java定时任务调度框架
    uboot: initramfs image to roofs, and rootfs to initramfs image
    jfrog CLI(command line interface)
    git submodule list/clone/update
    python run javascript in ubuntu
    git blame
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3196713.html
Copyright © 2020-2023  润新知