ClassPathXmlApplicationContext: 从类加载路径下搜索配置文件,并根据配置文件来创建Spring容器。
FileSystemXmlApplicationContext: 从文件系统的相对路径或绝对路径下去搜索配置文件,并根据配置文件来创建Spring容器。
public class test{
public static void main(String[] args){
//从类加载路径下搜索配置文件,也就是class下
ApplicationContext context = new ClassPathXmlApplication("bean.xml");
//获取配置文件中配置的bean对应的实例
Person person = context.getBean("person",Person.class);
person.toString();
}
1.singlton单例模式:在整个SpringIOC容器(ApplicationContext)中,该作用域下的bean将只生成一个实例
2.prototype:每次通过容器的getBean()获取bean时,都会产生一个新的实例
3.request:对于每次http请求,容器都将产生一个新的实例。只有在web应用中使用Spring容器时该作用域才有效
4.session:对于一次会话,容器都将只产生一个实例。同样只有在web应用中使用Spring容器时该作用域才有效
5.global session: 每个全局的HTTP Session对应一个Bean实例。在典型的情况下,仅在使用portlet context的时候有效,同样只在Web应用中有效。
1.no: 不使用自动装配。Bean依赖必须通过ref元素定义。这是默认配置,在较大的部署环境中不鼓励改变这个配置,显式配置合作者能够得到更清晰的依赖关系。
2.byName: 根据setter方法名进行自动装配。Spring容器查找容器中全部Bean,找出其id与setter方法名去掉set前缀,并小写首字母后同名的Bean来完成注入。如果没有找到匹配的Bean实例,则Spring不会进行任何注入。
3.byType: 根据setter方法的形参类型来自动装配。Spring容器查找容器中的全部Bean,如果正好有一个Bean类型与setter方法的形参类型匹配,就自动注入这个Bean;如果找到多个这样的Bean,就抛出一个异常;如果没有找到这样的Bean,则什么都不会发生,setter方法不会被调用。
4.constructor: 与byType类似,区别是用于自动匹配构造器的参数。如果容器不能恰好找到一个与构造器参数类型匹配的Bean,则会抛出一个异常。
5.autodetect: Spring容器根据Bean内部结构,自行决定使用constructor或byType策略。如果找到一个默认的构造函数,那么就会应用byType策略。
1.全局默认bean装配方式设置:<beans default-autowire />;
2.指定的bean装配方式设置:<bean id="" autowire-candidate="false"/>;
3.全局指定beans不自动装配:<bean id="" autowire-candidate="false"/>;
4.指定的bean不自动装配:<bean id="" autowire-candidate="false"/>;</h5>