1.Spring自动装配
Spring自动装配有2种方式,分别是根据名字(id)和类型,推荐使用名字。
1.1 Spring根据Bean id自动装配
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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean
id="book"
class="com.test.Book"></bean>
<bean
id="Internet"
class="com.test.Internet"></bean>
<bean
id="student"
class="com.test.Student">
<property
name="name"
value="zhangsan">
</property>
<property name="tool">
<ref local="book" />
</property>
</bean>
</beans>
Java代码:
Person接口
package com.test;
public interface Person
{
public void work();
}
Student类
package com.test;
public class Student implements Person
{
private Tool tool;
private String name;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public Tool getTool()
{
return tool;
}
public void setTool(Tool tool)
{
this.tool = tool;
}
@Override
public void work()
{
getTool().doWork(getName());
}
}
Tool接口
package com.test;
public interface Tool
{
public void doWork(String name);
}
Internet类
package com.test;
public class Internet implements Tool
{
@Override
public void doWork(String name)
{
System.out.println("你好:" + name + ", 欢迎使用Internet。通过Internet你可以查阅你所研究领域的最新进展。");
}
}
package com.test;
public class Book implements Tool
{
@Override
public void doWork(String name)
{
System.out.println("你好:" + name + ", 欢迎使用书籍。书籍是人类进步的阶梯。");
}
}
运行客户端Client
package com.test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class Client
{
public static void main(String[] args)
{
ClassPathResource classPathResource = new ClassPathResource(
"applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(classPathResource);
Person student = (Person) factory.getBean("student");
student.work();
}
}
运行结果:
你好:zhangsan, 欢迎使用书籍。书籍是人类进步的阶梯。
根据id自动装配,主要是ref这个属性的配置。