下面是一个完整的例子,演示了在 Spring 中如何通过不同的方式获取 Bean。
假设有一个简单的 Java 类 MyBeanType
:
public class MyBeanType {
private String propertyName;
public void setPropertyName(String propertyName) {
this.propertyName = propertyName;
}
public String getPropertyName() {
return propertyName;
}
}
然后,在 Spring 配置文件 applicationContext.xml
中定义了一个 Bean:
<!-- applicationContext.xml -->
<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.xsd">
<bean id="myBean" class="com.example.MyBeanType">
<property name="propertyName" value="Hello, Spring!"/>
</bean>
</beans>
接下来,我们可以使用不同的方式获取这个 Bean。
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
// 初始化 Spring 容器
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// 1. 使用 Bean 的 ID 获取
MyBeanType myBeanById = (MyBeanType) context.getBean("myBean");
System.out.println("1. 使用 Bean 的 ID 获取:" + myBeanById.getPropertyName());
// 2. 使用 Bean 的 Class 获取
MyBeanType myBeanByClass = context.getBean(MyBeanType.class);
System.out.println("2. 使用 Bean 的 Class 获取:" + myBeanByClass.getPropertyName());
// 3. 使用 Bean 的 ID 获取和类型获取
MyBeanType myBeanByIdClass= context.getBean("myBean", MyBeanType.class);
System.out.println("3. 使用 Bean 的 ID 和类型 获取:" + myBeanByIdClass.getPropertyName());
}
}