Spring学习笔记——03Spring Bean配置(一)

一. Bean配置解释

1. 例子
  • <bean id="user" class="com.hjf.pojo.User">
    	...
    </bean>
    
2. 配置解释
  1. < bean>: 让IOC容器管理一个具体的对象.
  2. id: bean的唯一标识
  3. class: 类的全类名. 通过反射的方式创建对象.
    Class cls = Class.forName("com.hjf.pojo.User");
    Object obj  = cls.newInstance(); //无参数构造器
    
    所以类中必须要有无参构造

二. IOC创建对象的方式

1. 通过下标赋值
  1. 例子

    <constructor-arg index="0" value="2"/>
    <constructor-arg index="1" value="李四"/>
    <constructor-arg index="2" value="20"/>
    
  2. 说明

    1. index: 构造器参数的下标
    2. value: 指定属性值
2. 通过类型赋值(不建议使用)

相同类型的参数只允许出现一次, 如果重复, 则无法区分是给哪个参数赋值

  1. 例子

    <bean id="teacher" class="com.hjf.pojo.Teacher">
     	<property name="id" value="3"/>
       	<property name="name" value="张老师"/>
    </bean>
    <bean id="user" class="com.hjf.pojo.User">
       	<!--方式1: 通过参数的顺序进行赋值-->
       	<constructor-arg type="int" value="3"/>
       	<constructor-arg type="java.lang.String" value="王五"/>
       	<constructor-arg type="com.hjf.pojo.Teacher" ref="teacher" />
    </bean>
    
3. 通过属性名赋值
  • <bean id="user" class="com.hjf.pojo.User">
        <constructor-arg name="id" value="4" />
        <constructor-arg name="name" value="赵六" />
        <constructor-arg name="teacher" ref="teacher" />
    </bean>
    

三. Spring配置

1. 别名

方式一: 通过alias标签
  1. 配置

    <bean id="user" class="com.hjf.pojo.User">
    	...
    </bean>
    <!--  -->
    <alias name="user" alias="u" />
    
  2. 测试
    在这里插入图片描述

方式二: 通过name属性
  1. 配置

    <bean id="user" class="com.hjf.pojo.User" name="u1 u2, u3">
        <constructor-arg name="id" value="4" />
        <constructor-arg name="name" value="赵六" />
        <constructor-arg name="teacher" ref="teacher" />
    </bean>
    
  2. 测试
    在这里插入图片描述

  3. 说明:

    1. name属性可以同时命名多个别名
    2. 多个别名间可以使用常用的符号分割, 如:“空格”, “逗号”, "分号"等

2. import: 导入配置文件

  • 例子

    <import resource="beans.xml"/>
    <import resource="beans2.xml"/>
    <import resource="beans3.xml"/>
    

四. 依赖注入

依赖:bean对象的创建依赖于容器
注入:bean对象中的所有属性,由容器来注入

1. 构造器注入

见: IOC创建对象的方式

2. set 方法注入(重点)

1. 说明
  1. 实体类

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Student {
        private String name;
        private Address address;
        private String[] books;
        private List<String> hobbies;
        private Map<String, String> card;
        private Set<String> games;
        private Properties info;
        private String wife;
    }
    
    
  2. 配置文件

    <bean id="address" class="com.hjf.pojo.Address">
        <property name="address" value="四川.成都"/>
    </bean>
    <bean id="student" class="com.hjf.pojo.Student">
        <!-- value: 基本类型 -->
        <property name="name" value="张三" />
        <!-- ref: 引用数据类型 -->
        <property name="address" ref="address"/>
        <!-- array-value: 数组 -->
        <property name="books">
            <array value-type="java.lang.String">
                <value>三国演义</value>
                <value>水浒传</value>
                <value>红楼梦</value>
                <value>西游记</value>
            </array>
        </property>
        <!-- list-value: 列表 -->
        <property name="hobbies">
            <list>
                <value>看电影</value>
                <value>读书</value>
                <value>听歌</value>
            </list>
        </property>
        <!-- map-value: 字典-->
        <property name="card">
            <map>
                <entry key="身份证" value="1000001" />
                <entry key="学生卡" value="1000002" />
            </map>
        </property>
        <!-- set-value: 集合-->
        <property name="games">
            <set>
                <value>王者荣耀</value>
                <value>LOL</value>
                <value>吃鸡</value>
            </set>
        </property>
        <!-- props-prop: Properties-->
        <property name="info">
            <props>
                <prop key="age">18</prop>
                <prop key="sex"></prop>
            </props>
        </property>
        <!-- null: null -->
        <property name="wife">
            <null/>
        </property>
    </bean>
    

3. 第三方

1. p命名空间
  1. 导入配置

    xmlns:p="http://www.springframework.org/schema/p"
    
  2. 配置文件

    <bean id="user4" class="com.hjf.pojo.User"
        p:id="01" p:name="张三丰" p:teacher-ref="teacher"/>
    
2. c命名空间
  1. 导入配置

    xmlns:c="http://www.springframework.org/schema/c"
    
  2. 配置文件

    <bean id="user2" class="com.hjf.pojo.User"
    	c:id="01" c:name="张三丰" c:teacher-ref="teacher"/>
    <bean id="user3" class="com.hjf.pojo.User"
    	c:_0="02" c:_1="姜子牙" c:_2-ref="teacher"/>
    

五. bean作用域

1. 单例模式(默认)
  1. 配置
    <bean id="user5" class="com.hjf.pojo.User" scope="singleton"
        c:id="01" c:name="张三丰" c:teacher-ref="teacher"/>
    
  2. 测试
    在这里插入图片描述
2. 原型模式:

每次从容器中get的时候,都产生一个新对象!

  1. 配置
    <bean id="user6" class="com.hjf.pojo.User" scope="prototype"
        c:id="01" c:name="张三丰" c:teacher-ref="teacher"/>
    
  2. 测试
    在这里插入图片描述
3. 其他

其余的request、session、application这些只能在web开放中使用!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值