java spring IOC外部Bean注入

外部Bean注入也是一种Bean操作的属性注入 但这次我们要注入的是一个类对象

我们先创建spring项目 引入基本依赖

然后在src下创建两个包 gettingStarted 和 generate 这个名字可以随便取 但和我同名 可以让你们不会出现 名称不一样导致资源找不到的问题

然后在
gettingStarted包下创建一个 类 一个 接口
InterfaceUser 接口 参考代码如下

package gettingStarted;

public interface InterfaceUser {
    
    
    public void setName(String name);
    public String getName();
    public void setAge(int age);
    public int getAge();
}

这就是一个很普通的接口 里面定义了四个抽象方法

分别是两个属性 (name age) 的get和set方法

user类 参考代码如下

package gettingStarted;

public class user implements InterfaceUser {
    
    
    public String name = "小裴";
    public int age = 13;

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

    public void setAge(int age){
    
    
        this.age = age;
    }
    public int getAge(){
    
    
        return age;
    }
}

user类实现了InterfaceUser接口 重写了 这几个抽象的方法 并定义了两个值 name 和 age

然后在generate包下创建 organization类 参考代码如下

package generate;

import gettingStarted.InterfaceUser;

public class organization {
    
    
    public InterfaceUser User;
    public void setUser(InterfaceUser User){
    
    
        this.User = User;
    }
    public InterfaceUser getUser() {
    
     return this.User; }
    public void verifyOutput() {
    
    
        System.out.println(User.getName());
        System.out.println(User.getAge());
    }
}

这里 我们定义了一个InterfaceUser对象类型的变量(User) InterfaceUser 就是之前我们定义的 InterfaceUser 接口 我们需要一个这样的对象

然后声明了这个 InterfaceUser 对象的set方法
然后 verifyOutput方法 就调用了InterfaceUser中的两个get方法 获取值

然后 我们在src下创建 bean.xml
参考代码如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:p="http://www.springframework.org/schema/p"
       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.xsd">
    <!-- user类的对象创建 -->
    <bean id = "user" class = "gettingStarted.user"></bean>
    <bean id = "organization" class = "generate.organization">
        <property name="User" ref="user"></property>
    </bean>
</beans>

这里 我们定义了organization类的对象时 直接 通过property给他的set复制 name User 代表指向类中的 User变量的set方法 然后 这个ref指向了user 就是我们第一个定义的bean创建了gettingStarted.user的对象 然后将这个对象 给了ref

简单说 就是 organization 接受一个InterfaceUser对象 xml 创建了gettingStarted.user的对象 然后将这个对象给到organization 中User的set方法 这时 organization 的 User就接到了一个 InterfaceUser实现为user类的对象

然后我们在src下创建 text
代码如下

import generate.organization;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class text {
    
    
    public static void main(String args[]) {
    
    
        //获取配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        organization organization = context.getBean("organization", organization.class);
        organization.verifyOutput();
    }
}

我们读取了 bean.xml的配置 然后通过反射创建对象 然后通过organization对象调用里面的verifyOutput方法
运行结果如下
在这里插入图片描述
这就是外部Bean注入 简单说就是注入一个类对象

猜你喜欢

转载自blog.csdn.net/weixin_45966674/article/details/128747256