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