spring-03.di注入实现

1.di:依赖注入,表示创建对象,给属性赋值

2.di的实现有两种:

  • 在spring的配置文件中,使用标签和属性完成,叫做基于xml的di实现
  • 使用spring中的注解,完成属性赋值,叫做基于注解的di实现

3.di的语法分类:

  • set注入(设置注入):spring调用类的set方法,在set方法可以实现属性的赋值,80%左右使用的set注入
  • 构造注入,spring调用类的有参数构造方法,创建对象,在构造方法中完成赋值
    4.set基本类型赋值
  • 创建Student类
public class Student {
    private String name;
    private int age;

    public void setName(String name) {
        this.name = name;
        System.out.println("spring调用setName方法");
    }

    public void setAge(int age) {
        this.age = age;
        System.out.println("spring调用setAge方法");
    }

  • 给Student属性赋值

    <!--声明student对象-->
    <!--
    1.set注入(设置注入):spring调用类的set方法,你可以在set方法中完成属性赋值
    1)简单类型的set注入,spring中规定java的基本数据类型和String都是简单类型
    <bean id="xx" class="yy">
        <property name="属性名称" value="此属性的值"/>
        一个property只能给一个属性赋值
    </bean>

    -->
    <bean id="myStudent" class="com.chongqing.ba01.Student" >
        <property name="name" value="lisi"/>
        <property name="age" value="20"/>
    </bean>
</beans>

5.注意:

  • 如果在student类中没有email属性,但是有setEmail方法,则
<property name="email" value="123@qq.com"/>

也是可以执行的。

  • 属性age为int,在配置文件中value的值必须得加引号。

5.引用类型赋值

  • 新建一个School类
public class School {
    private String name;
    private String address;

    public void setName(String name) {
        this.name = name;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "School{" +
                "name='" + name + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

  • 在Student类中新增一个属性
    public void setSchool(School school) {
        this.school = school;
    }

  • 配置文件
<!--
2) 引用类型的set注入:spring调用类的set方法
    <bean id="xx" class="yy">
        <property name="属性名称" ref="beande id(对象的名称)"/>
    </bean>

    -->
    <bean id="myStudent" class="com.chongqing.ba02.Student" >
        <property name="name" value="lisi"/>
        <property name="age" value="26"/>
        <!-- 引用类型的赋值-->
        <property name="school" ref="mySchool"/>
    </bean>

    <bean id="mySchool" class="com.chongqing.ba02.School" >
        <property name="name" value="北京大学"/>
        <property name="address" value="北京的海淀区"/>
    </bean>

6.构造注入
spring调用类的有参构造方法,在创建对象的同时,在构造方法中给属性赋值
构造注入使用constructor-arg标签,一个constructor-arg标签表示构造方法一个标签
其中name:表示构造方法的形参名
index表示构造方法的参数的位置,参数从左往右的位置是0,1,2的属性
value:构造方法的形参类型是简单类型的,使用value
ref:构造方法的形参类型是引用类型的,使用ref

  • 创建student的有参构造函数
public Student(String name, int age, School school) {
        this.name = name;
        this.age = age;
        this.school = school;
        System.out.println("Strdent类有参数构造方法");
    }
  • 配置文件,使用name赋值
<bean id="myStudent" class="com.chongqing.ba03.Student" >
        <constructor-arg name="name" value="张三"/>
        <constructor-arg name="age" value="20"/>
        <constructor-arg name="school" ref="mySchool"/>
    </bean>

<bean id="mySchool" class="com.chongqing.ba03.School" >
        <property name="name" value="北京大学"/>
        <property name="address" value="北京的海淀区"/>
    </bean>
  • 配置文件,使用index赋值,也可以省略index,会默认位置顺序0,1,2
<bean id="myStudent" class="com.chongqing.ba03.Student" >
        <constructor-arg index="0" value="张三"/>
        <constructor-arg index="1" value="23"/>
        <constructor-arg index="2" ref="mySchool"/>
    </bean>

    <bean id="mySchool" class="com.chongqing.ba03.School" >
        <property name="name" value="北京大学"/>
        <property name="address" value="北京的海淀区"/>
    </bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
spring-beans.jar是Spring框架中的一个核心JAR文件,它包含了Spring容器的基本组件BeanFactory和ApplicationContext,以及与Bean相关的一系列类和接口。如果没有spring-beans.jar,Spring框架将不能运行。 首先,Spring框架的核心思想是依赖注入(Dependency Injection,DI)和控制反转(Inversion of Control,IOC)。这意味着对象之间的依赖关系将不再由对象自身管理,而是由Spring容器来管理。在这种情况下,Spring容器必须能够创建和管理对象的实例,以及管理它们之间的依赖关系。这就是spring-beans.jar的作用。 BeanFactory是Spring容器的基本组件之一。它是一个工厂类,负责管理Bean的生命周期、创建Bean实例、管理Bean的依赖关系和Bean之间的通信。ApplicationContext是BeanFactory的扩展,除了BeanFactory的功能,它还提供了事件机制、AOP(面向切面编程)、异常处理等其他的功能。Spring框架的大部分应用程序都需要使用BeanFactory或ApplicationContext来管理Bean。 另外,spring-beans.jar还包含了一系列与Bean相关的类和接口。例如,BeanInfo、BeanDefinition、BeanWrapper、BeanPostProcessor、InitializingBean、DisposableBean等,这些类和接口提供了在Bean创建、初始化、销毁等过程中的扩展点,可以让开发者在这些过程中加入自己的逻辑,实现自己的扩展。 总之,spring-beans.jar可以说是Spring框架的核心之一,没有它,Spring框架将不能运行。它提供了创建、管理Bean实例以及它们之间的依赖关系、扩展点等功能,是Spring框架中不可替代的重要组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值