欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring IOC控制反转与DI依赖注入

程序员文章站 2022-06-28 16:29:40
代码实现代码结构代码实现User1set方式注入创建User1,声明name和age属性,并添加对应的setter和getter方法,以及toString方法package cn.tedu.pojo;public class User1 { private UserInfo userInfo; private String name ; private Integer age ; @Override public String toStr...

代码实现

代码结构

spring IOC控制反转与DI依赖注入

代码实现

User1

set方式注入
创建User1,声明name和age属性,并添加对应的setter和getter方法,以及toString方法

package cn.tedu.pojo;

public class User1 {
    private UserInfo userInfo;

    private String name ;
    private Integer age ;
    
    @Override
    public String toString() {
        return "User1{" +
                "userInfo=" + userInfo +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public UserInfo getUserInfo() {
        return userInfo;
    }

    public void setUserInfo(UserInfo userInfo) {
        this.userInfo = userInfo;
    }
}

UserInfo

构造器注入
创建UserInfo,声明id和na属性,并添加有参和无参构造方法,以及toString方法

package cn.tedu.pojo;

public class UserInfo {
    private Integer id;
    private String na;

    public UserInfo() {
    }

    public UserInfo(Integer id, String na) {
        this.id = id;
        this.na = na;
    }

    @Override
    public String toString() {
        return "UserInfo{" +
                "id=" + id +
                ", na='" + na + '\'' +
                '}';
    }
}

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<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-4.0.xsd">

    <!-- 声明bean对象,id是唯一标志,class:bean对象的全路径 -->
    <bean id="userId" class="cn.tedu.pojo.User1">
        <!--方法一:set方式注入-->
        <!-- 通过set方式为普通属性赋值 -->
        <property name="name" value="set方式注入"></property>
        <!-- 通过set方式为对象属性赋值 -->
        <property name="userInfo" ref="userInfoId"></property>
    </bean>
    <bean id="userInfoId" class="cn.tedu.pojo.UserInfo">
        <!--方式二:构造器注入-->
        <!--通过构造器中参数为属性赋值-->
        <constructor-arg name="id" value="1"></constructor-arg>
        <constructor-arg name="na" value="构造器注入"></constructor-arg>
    </bean>
</beans>

测试类Test1

package cn.tedu;

import cn.tedu.pojo.User1;
import cn.tedu.pojo.UserInfo;
import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test1 {

    @Test
    public void test1(){
        //1.加载spring的核心配置文件
        ClassPathXmlApplicationContext ca =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        //2.从spring容器中获取bean对象
        User1 user = (User1) ca.getBean("userId");
        //3.打印对象的toString方法
        System.out.println(user);

        UserInfo userInfo =(UserInfo) ca.getBean("userInfoId");
        System.out.println(userInfo);
    }
}

结果:

spring IOC控制反转与DI依赖注入

本文地址:https://blog.csdn.net/weixin_43187081/article/details/112018030