外部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注入 简单说就是注入一个类对象