Spring_用Spring容器创建对象并给属性赋值

创建spring配置文件:spring-config.xml。对象的创建和赋值都在这里进行配置。

创建实体类,设置属性

import java.util.List;
import java.util.Map;

public class BookBean {

    private Long bookId;
    private String bookName;
    private Float price;
    private List<String> fzb;
    private Map<String,String> fields;
    private CategoryBean categoryBean;  //引用另外一个实体类
     
//注意:
//如果有构造方法,创建对象时配置文件则会你读重写的构造的方法,如果用setter方法赋值,则必须要重载一个空的构造方法。
public BookBean() { } public BookBean(Long bookId, String bookName, Float price) { this.bookId = bookId; this.bookName = bookName; this.price = price; }
}

1.创建单例对象:在整个项目运行期间,这个对象只有一个。

 <bean class="com.lanou.demo.bean.BookBean" id="book1"/>

2.创建多例对象:每次取出的对象都是一个新的对象,

 <bean class="com.lanou.demo.bean.BookBean" id="book1" scope="prototype"/>

3.创建对象是为对象属性赋值,前提时属性必须要有setter方法

<bean class="com.lanou.demo.bean.BookBean" id="book2">

        <property name="bookId" value="1"/>
        <property name="bookName" value="西游记"/>
        <property name="price" value="34.4"/>

<!--为对象中的集合类型的属性赋值-->
        <property name="fzb">
            <list>
                <value>李忠仁</value>
                <value>马琳</value>
                <value>陈颖媛</value>
            </list>
        </property>

<!--为对象中的map类型的属性赋值: -->
        <!--第一种方式:-->
        <property name="fields">
            <map>
                <entry key="1" value="陈新元的诞生"/>
                <entry key="2" value="陈新元的灭亡"/>
            </map>
        </property>
<!--第二种方式:-->
        <property name="fields">
            <props>
                <prop key="1">陈新元的复活</prop>
                <prop key="1">陈新元的崛起</prop>
            </props>
        </property>

<!--在一个bean中引用另外一个bean的对象,使用ref赋值-->
        <property name="categoryBean" ref="category1"/>
   </bean>

4.用构造方法给属性赋值。

  <bean class="com.lanou.demo.bean.BookBean" id="book3">
        <!--为构造方法中bookId这个参数赋值-->
        <constructor-arg name="bookId" value="2"/>
        <constructor-arg name="bookName" value="西游记"/>
        <constructor-arg name="price" value="45.5"/>
    </bean>
原文地址:https://www.cnblogs.com/zhouchangyang/p/10885806.html