IoC容器是用来管理应用程序中的Bean,处理Bean间的关系,需要我们来配置Bean。配置文件描述了bean的定义和它们之间的依赖关系。Spring 是通过java的反射机制动态生成Bean对象注入程序中,至于什么是Java反射机制,看了java反射机制的代码我也是一脸懵逼,只是稍微懂得大概的思想罢了,似乎是java编译的时候生成.class文件,然后根据.class文件能够反射生成其对象,(不知道对不对,这个当我胡扯吧,尴尬)
Spring通过BeanFactory或者ApplicationContext接口来实现对容器的加载。
BeanFactory 是Spring的原始Factory,如XMLBeanFactory就是一种典型的BeanFactory。
而ApplicationContext继承了BeanFactory的所有接口,并提供了更多高级特性,所以建议使用后者。
ApplicationContext的实现类有:ClassPathXmlApplicationContext:从CLASSPATH加载配置文件。
FileSystemXmlApplicationContext:从文件系统加载配置文件。
例子:
而对于Web项目,通常ApplicationContext还可以在Web.xml中配置监听器ContextLoaderListener,它的作用是启动web容器时,自动装配ApplicationContext的配置信息。
contextConfigLocation
/WEB-INF/applicatonContext.xml
org.springframework.web.context.ContextLoaderListener
通过上面的学习后,就能够晓得怎么在main或者单元测试类中加载IoC容器(xml配置文件)以及调用Bean对象了,下面来了解下Spring 的xml配置文件。
Spring的配置文件
spring配置文件其实就是描述了Bean的基本信息以及Bean之间的依赖关系。
有id,name,class,singleton,autowire,init-method,destory-method,
举个例子来解释下Bean的自动装配
XML配置文件中负责描述类的基本信息以及类间的关系,
总之:在定义Bean时,
autowire的属性有:no:默认值,不采用自动装配。
byName:通过属性名称的方式来查找JacvaBean依赖的对象并注入
byType:通过属性的类型的方式查找JavaBean依赖对象并且注入
constructor-arg:构造器注入
autodetect:byType与constructor之间自动选择