1、定义两个具有组合关系的Bean组件类,在applicationContext.xml中添加定义。 2、掌握如何获取Spring容器及获取对象。 3、单例模式与多例模式的创建及使用。 4、使用注解,给容器中注入组件。
时间: 2023-12-14 15:38:51 浏览: 77
1. 定义两个具有组合关系的Bean组件类,在applicationContext.xml中添加定义:
```xml
<!-- 定义组件A -->
<bean id="componentA" class="com.example.ComponentA">
<property name="componentB" ref="componentB"/>
</bean>
<!-- 定义组件B -->
<bean id="componentB" class="com.example.ComponentB"/>
```
2. 获取Spring容器及获取对象:
```java
// 获取Spring容器
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取对象
ComponentA componentA = context.getBean("componentA", ComponentA.class);
ComponentB componentB = context.getBean("componentB", ComponentB.class);
```
3. 单例模式与多例模式的创建及使用:
单例模式创建:
```xml
<bean id="componentA" class="com.example.ComponentA" scope="singleton">
<property name="componentB" ref="componentB"/>
</bean>
```
多例模式创建:
```xml
<bean id="componentB" class="com.example.ComponentB" scope="prototype"/>
```
使用单例模式或多例模式的组件:
```java
ComponentA componentA1 = context.getBean("componentA", ComponentA.class);
ComponentA componentA2 = context.getBean("componentA", ComponentA.class);
// componentA1 和 componentA2 是同一个对象,因为使用了单例模式
System.out.println(componentA1 == componentA2);
ComponentB componentB1 = context.getBean("componentB", ComponentB.class);
ComponentB componentB2 = context.getBean("componentB", ComponentB.class);
// componentB1 和 componentB2 是不同的对象,因为使用了多例模式
System.out.println(componentB1 == componentB2);
```
4. 使用注解,给容器中注入组件:
```java
@Component
public class ComponentA {
@Autowired
private ComponentB componentB;
// getter 和 setter 省略
}
@Component
public class ComponentB {
// 省略属性和方法
}
```
在applicationContext.xml中开启注解支持:
```xml
<context:annotation-config/>
```
获取对象:
```java
ComponentA componentA = context.getBean(ComponentA.class);
ComponentB componentB = context.getBean(ComponentB.class);
```
阅读全文