ApplicationContext getParent()--容器层结构的概念
ApplicationContext会在初始化的自动加载单例Bean。而BeanFactory在初始化的时候不会加载。
应用上下文ApplicationContext是建立在BeanFactory基础上的一种更高层次的Spring IOC容器,其除了具有普通BeanFactory的全部功能以外,还加入了资源访问、事件传播及自动载入上下文等跟应用程序紧密相关的功能。
在J2EE应用程序中,大多数时候都直接使用应用上下文件ApplicationContext,比如Web应用等,而且一般不会在程序中使用代码来加载应用程序上下文,而是采用声明的方式,在应用程序启动的过程中自动加载应用程序上下文。
5.三种实例化Bean的方式
5.1通过构造函数
默认无参构造函数,也可以使用带参数的。
(1)无参数的构造函数
publicPerson() {
System.out.println("初始化person");
}
(2) 无参数的配置
(3)带参数的构造函数
public Person(String name) {
this.name= name;
System.out.println("创建Person,构造函数1");
}
(4)带参数的配置
5.2使用静态工厂方法
(1)无参的工厂类
public class PersonFactory {
publicstatic Person createPerson(){
System.out.println("createPerson()...");
return new Person();
}
}
(2) 无参的配置
(3)带参数的工厂方法
public class PersonFactory {
publicstatic Person createPerson(String name){
System.out.println("createPerson()...222222");
returnnew Person(name);
}
}
(4) 带参数的配置
5.3使用动态工厂方法
(1)工厂类
public class PersonFactoryFamily {
privateString family;
publicvoid setFamily(String family) {
this.family= family;
}
public Person createPerson(){
System.out.println("createPerson()...");
returnnew Person(family+":");
}
public Person createPerson(String name){
System.out.println("createPerson()...2");
returnnew Person(family+":"+name);
}
}
(2)配置
factory-method="createPerson"(指明调用工厂类的哪个方法)> 6. Bean的作用域(存活期) 在每个Spring IoC容器中一个bean定义只有一个对象实例(共享)。 默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如: 如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=“true“,如下: autowired属性的取值: byName:按名称自动装配,不会装配基本类型。 byType:按类型自动装配 constructor:会按照构造函数参数的类型来自动装配.会选择参数最多的一个来,依次查询参数个数少的。
1)singleton(默认值)