1. 当创建容器的时候,
作用域为singleton的bean会全部被创建(抽象的bean除外)。
作用域为propertype的时候,创建容器的时候不 会被创建,但是当getbean的时候,会被创建。
2. 协调作用域不同步的问题:当simpleton作用域的bean依赖于prototype的bean的时候,容器只会向simpleton作用域的bean注入一次,这样会引发问题:
package com.huxin.springfirst.service.impl;
import com.huxin.springfirst.dao.Axe;
import com.huxin.springfirst.service.Person;
public abstract class Chinese implements Person {
private Axe axe;
// public Axe getAxe() {
// return axe;
// }
//
// public void setAxe(Axe axe) {
// this.axe = axe;
// }
// public Chinese(Axe axe){
// System.out.println("我被创建");
// this.axe = axe;
// }
public abstract Axe getAxe();
public void userAxe() {
axe.chop();
}
public void close(){
System.out.println("人的这个bean被销毁");
}
}
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="stoneAxe" class="com.huxin.springfirst.dao.impl.StoneAxe" />
<bean id="chinese" class="com.huxin.springfirst.service.impl.Chinese" destroy-method="close">
<!-- <property name="axe" ref="stoneAxe"/> -->
<lookup-method name="getAxe" bean="stoneAxe"/>
</bean>
</beans>
使用一个抽象的方法,让容器自动进行注入!!!