设计Person类和Address类, Address类,有属性 province,city Person类有name,age,address,favorite(爱好)属性,其中address属性是Address类的一个实例,favorite为列表。给出以下各个要求的配置文档和测试文档 1:请使用构造器注入,注册并创建一个(小明,21岁,福建福州,[足球、听歌、旅行])的bean实例,singleton模式: 2:请使用属性注入,注册并创建一个(小李,20岁,江苏南京,[跳舞、读书、看电影])的bean实例,prototype模式 3:请使用注解注入,注册并创建一个(小王,23岁,江西南昌,[跳舞、唱歌、旅游])的bean实例, 该实例创建时需打印出:“我创建了”,销毁前打印“我销毁了”
时间: 2023-10-01 12:03:12 浏览: 41
1. 配置文档(使用构造器注入,singleton模式)
```xml
<bean id="address1" class="Address">
<constructor-arg value="福建"/>
<constructor-arg value="福州"/>
</bean>
<bean id="person1" class="Person" scope="singleton">
<constructor-arg value="小明"/>
<constructor-arg value="21"/>
<constructor-arg ref="address1"/>
<property name="favorite">
<list>
<value>足球</value>
<value>听歌</value>
<value>旅行</value>
</list>
</property>
</bean>
```
测试文档
```java
ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");
Person person1 = (Person) context.getBean("person1");
System.out.println(person1);
```
输出结果
```
Person{name='小明', age=21, address=Address{province='福建', city='福州'}, favorite=[足球, 听歌, 旅行]}
```
2. 配置文档(使用属性注入,prototype模式)
```xml
<bean id="address2" class="Address">
<property name="province" value="江苏"/>
<property name="city" value="南京"/>
</bean>
<bean id="person2" class="Person" scope="prototype">
<property name="name" value="小李"/>
<property name="age" value="20"/>
<property name="address" ref="address2"/>
<property name="favorite">
<list>
<value>跳舞</value>
<value>读书</value>
<value>看电影</value>
</list>
</property>
</bean>
```
测试文档
```java
ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");
Person person2 = (Person) context.getBean("person2");
System.out.println(person2);
```
输出结果
```
Person{name='小李', age=20, address=Address{province='江苏', city='南京'}, favorite=[跳舞, 读书, 看电影]}
```
3. 配置文档(使用注解注入)
```xml
<context:annotation-config/>
<bean id="address3" class="Address">
<property name="province" value="江西"/>
<property name="city" value="南昌"/>
</bean>
<bean id="person3" class="Person" init-method="init" destroy-method="destroy">
<property name="name" value="小王"/>
<property name="age" value="23"/>
<property name="address" ref="address3"/>
<property name="favorite">
<list>
<value>跳舞</value>
<value>唱歌</value>
<value>旅游</value>
</list>
</property>
</bean>
```
测试文档
```java
ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");
Person person3 = (Person) context.getBean("person3");
System.out.println(person3);
((ClassPathXmlApplicationContext) context).close();
```
输出结果
```
我创建了
Person{name='小王', age=23, address=Address{province='江西', city='南昌'}, favorite=[跳舞, 唱歌, 旅游]}
我销毁了
```
注:在Person类中需要添加init和destroy方法,用于在创建和销毁bean时输出相应信息。
```java
public void init() {
System.out.println("我创建了");
}
public void destroy() {
System.out.println("我销毁了");
}
```