-
Bean的基础配置
例如:配置UserDaoImpl由Spring容器负责管理
<beanid="userDao"class="com.xfy.dao.Impl.UserDaoImpl"></bean>
此时存储到Spring容器中的Bean的beanName是userDao,值是UserDaoImpl,可以根据beanName获取Bean实例
UserDao userDao = (UserDao)applicationContext.getBean("userDao");
如果没有设置id,那么会把当前Bean实例的全限定名作为beanName
UserDao userDao = (UserDao)applicationContext.getBean("com.xfy.dao.Impl.UserDaoImpl");
-
设置Bean的别名,代表BeanName的别名(id为先 name第二选择),其内部的本名并未改变
<bean id="userDao" name="dao" class="com.xfy.dao.Impl.UserDaoImpl"></bean>
-
Bean的范围配置
默认情况下,单纯的Spring环境Bean作用范围有两个:Singleton和Prototype
-
singleton:单例,默认值,Spring容器创建的时候,就会进行Bean的实例化,并存储到容器的单例池中,每次getBean时,都是从单例池中获取相同的Bean实例
-
Prototype:原型,Spring容器初始化时不会创建Bean实例,当调用getBean时才会实例化Bean,每次getBean都会创建一个新的Bean实例
-
-
Bean的延迟加载
当lazy-init设置为true时为延迟加载,也就是当Spring容器加载的时候,不会立即创建Bean实例,等待用到时再创建Bean实例并存储到单例池中,后续在使用Bean直接从单例池获取即可,本质上Bean还是单例的
<bean id="userDao" name="dao" class="com.xfy.dao.Impl.UserDaoImpl" lazy-init="true" ></bean>