codeglory
codeglory
发布于 2023-10-01 / 14 阅读 / 0 评论 / 0 点赞

Spring配置与注入方式

Spring容器在启动的时候就会加载配置

Spring中Bean的属性

import

import属性一般适用于一个团队的使用,他可以将多个文件集合成一个使用

<import resource="Beans.xml"/>

依赖注入

依赖注入分为三种方式如下:

1) 构造器注入

2) setter注入【重点】

我们可以通过 Bean 的 setter 方法,将属性值注入到 Bean 的属性中。
在 Spring 实例化 Bean 的过程中,IoC 容器首先会调用默认的构造方法(无参构造方法)实例化 Bean(Java 对象),然后通过 Java 的反射机制调用这个 Bean 的 setXxx() 方法,将属性值注入到 Bean 中。

使用 setter 注入的方式进行属性注入,大致步骤如下:

  1. 在 Bean 中提供一个默认的无参构造函数(在没有其他带参构造函数的情况下,可省略),并为所有需要注入的属性提供一个 setXxx() 方法;

  2. 在 Spring 的 XML 配置文件中,使用 及其子元素 对 Bean 进行定义;

  3. 在 元素内使用  元素对各个属性进行赋值。

  • 依赖 : bean对象的创建依赖容器

注入: bean对象中的属性,由容器创建
注入集合

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    <bean id="course" class="net.biancheng.c.Course">
        <property name="courseId" value="1"></property>
        <property name="courseName" value="Java课程"></property>
    </bean>
    <bean id="course2" class="net.biancheng.c.Course">
        <property name="courseId" value="2"></property>
        <property name="courseName" value="PHP课程"></property>
    </bean>
    <bean id="course3" class="net.biancheng.c.Course">
        <property name="courseId" value="3"></property>
        <property name="courseName" value="C语言课程"></property>
    </bean>
    <bean id="javaCollection" class="net.biancheng.c.JavaCollection">
        <!--数组类型-->
        <property name="courses">
            <array>
                <ref bean="course"></ref>
                <ref bean="course2"></ref>
                <ref bean="course3"></ref>
            </array>
        </property>
        <!--List 类型-->
        <property name="list">
            <list>
                <value>张三</value>
                <value>李四</value>
                <value>王五</value>
                <value>赵六</value>
            </list>
        </property>
        <!--Map 类型-->
        <property name="maps">
            <map>
                <entry key="JAVA" value="java"></entry>
                <entry key="PHP" value="php"></entry>
            </map>
        </property>
        <!--Set 类型-->
        <property name="sets">
            <set>
                <value>MySQL</value>
                <value>Redis</value>
            </set>
        </property>
    </bean>
</beans>
3) 拓展命名空间p与c首先我们需要在配置文件的 元素中导入以下 XML 约束xmlns:p="http://www.springframework.org/schema/p"

在导入 XML 约束后,我们就能通过以下形式实现属性注入。<bean id="Bean 唯一标志符" class="包名+类名" p:普通属性="普通属性值" p:对象属性-ref="对象的引用">
c 命名空间注入

c 命名空间是构造函数注入的一种快捷实现方式。通过它,我们能够以 属性的形式实现构造函数方式的属性注入,而不再使用嵌套的 元素,以实现简化 Spring 的 XML 配置的目的

首先我们需要在配置文件的 元素中导入以下 XML 约束。xmlns:c="http://www.springframework.org/schema/c"
在导入 XML 约束后,我们就能通过以下形式实现属性注入。

<bean id="Bean 唯一标志符" class="包名+类名" 
c:普通属性="普通属性值" c:对象属性-ref="对象的引用">


评论