直接上代码:
bean:
package com.hsp.inter;
public class UpperToLetter implements Change {
private String str;
public UpperToLetter(){
System.out.println("正在初始化中。");
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
public void change() {
System.out.println(str.toLowerCase());
}
}
beans.xml配置文件
<?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"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="change" class="com.hsp.inter.UpperToLetter">
<property name="str" value="ADSDFS"></property>
</bean>
</beans>
测试类:
package com.hsp.inter;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.hsp.util.ApplicationContextUtil;
public class App1 {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("com/hsp/inter/beans.xml");
}
}
使用beanFactory获取bean的代码如下:
public class App1 {
public static void main(String[] args) {
//ApplicationContext ac=new ClassPathXmlApplicationContext("com/hsp/inter/beans.xml");
BeanFactory factory=new XmlBeanFactory(new ClassPathResource("com/hsp/inter/beans.xml"));
factory.getBean("change");
}
}
结论:
1:在使用上下文容器ApplicationContext获取bean的时候,并且scope="singlton"(这是缺省值),那么会在配置bean的时候就会将bean初始化:。当scope的值不是singlton的时候,在配置bean的时候不会初始化bean,只有在使用bean
的时候采用初始化bean。(缺点:耗内存 。优点:可以预先加载)
2:在使用BeanFactory获取bean的时候,配置bean的时候不会马上初始化,只有当你使用该bean的时候才会初始化。(缺点:加载数度慢。优点:节约内存。)
3:一般没有特殊要求都是使用applicationContext(90%)
本文探讨了在Spring中通过ApplicationContext和BeanFactory获取bean的区别。使用ApplicationContext时,singleton作用域的bean会在配置时初始化,而其他作用域的bean在第一次请求时初始化。相比之下,BeanFactory在bean被请求时才进行初始化,从而节省内存但可能导致启动时速度较慢。通常情况下,由于其灵活性和预加载能力,ApplicationContext更常被使用。
1356

被折叠的 条评论
为什么被折叠?



