目录:applicationContext配置、bean标签配置、web.xml配置、
1、Spring容器分为两种类型:BeanFactory与ApplicationContext
1)、BeanFactory:(org.springframework.beans.factory.BeanFactory接口定义)是最简单的容器,它根据XML文件中的定义加载beans,该容器从XML文件读取配置元数据并用它去创建一个完全配置的系统或应用。 如果没有特殊指定,默认采用延迟初始化策略(lazy-load)只有当客户端对象需要访问容器中的某个受管对象的时候,才对该受管对象进行初始化以及依赖注入操作。所以,相对来说,容器启动初期速度较快,所需要的资源有限,并且功能要求不是很严格的场景。
2)、ApplicationContext应用上下文:(org.springframework.context.ApplicationContext)基于BeanFactory之上构建,并提供面向应用的服务。ApplicationContext所管理的对象,在该类型容器启动之后,默认全部初始化并绑定完成。所以,相对于BeanFactory来 说,ApplicationContext要求更多的系统资源,同时,因为在启动时就完成所有初始化,容 器启动时间较之BeanFactory也会长一些。在那些系统资源充足,并且要求更多功能的场景中, ApplicationContext类型的容器是比较合适的选择。
2、ApplicationContext通常的实现
1)ClassPathXmlApplicationContext:从类路径下的XML配置文件中加载上下文定义,把应用上下文定义文件当做类资源。 2)FileSystemXmlApplicationContext:读取文件系统下的XML配置文件并加载上下文定义。 3)XmlWebApplicationContext:读取Web应用下的XML配置文件并装载上下文定义。
3、IOC注入方式:
1)接口注入;2)构造器依赖注入;3)Setter方法注入 ;4)用注解方式
第二种与第三种方式是在配置文件中配置bean时作为参数,注解的方式有:
- Autowired是自动注入,自动从spring的上下文找到合适的bean来注入。
- Resource用来指定名称注入。
- Qualifier和Autowired配合使用,指定bean的名称。
4、bean标签中的属性
id;name;class; ini-method(Bean实例化后会立刻调用的方法); destory-method(Bean从容器移除和销毁前,会调用的方法); factory-method(运行时调用一个指定的静态方法,从而代替构造方法来创建一个类的实例); scope(Bean的作用域,包括默认singleton,prototype(每次调用都创建一个实例),request,session,global-session); autowired(自动装配byName,byType,constructor,autodetect(首先阐释使用constructor自动装配,如果没有发现与构造器相匹配的Bean时,Spring将尝试使用byType自动装配))。
5、bean装配的标签
Spring自动检测Bean和定义Bean.元素会扫描指定的包和其所有子包,如:标注Bean 注解如下: @Component:通用的构造型注解,标注此类为Spring组件 @Controller:标识该类定义为SpringMVC Controller @Repository:标识该类定义为数据仓库 @Service:标识该类定义为服务
6、Spring加载resources
Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath加载文件,如bean的定义文件。 classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。 classpath:只会到你的class路径中查找找文件,仅加载第一个classpath文件 用classpath*:需要遍历所有的classpath,所以加载效率会比较差一些,如果只使用classpath:,需要规划好资源文件的路径,尽量避免重名,导致资源文件加载不到的问题。
7、Spring中web.xml文件的配置
1)、一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。web.xml文件是用来初始化配置信息:比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的Application。
2)、当要启动某个web项目时,服务器软件或容器如(tomcat)会第一步加载项目中的web.xml文件,通过其中的各种配置来启动项目,只有其中配置的各项均无误时,项目才能正确启动。web.xml有多项标签,在其加载的过程中顺序依次为:context-param >> listener >> fileter >> servlet。(同类多个节点以出现顺序依次加载)。
在实际项目中spring的配置文件applicationcontext.xml是通过spring提供的加载机制自动加载到容器中。在web项目中,配置文件加载到web容器中进行解析。目前,spring提供了两种加载器,以供web容器的加载:一种是ContextLoaderListener,另一种是ContextLoaderServlet。这两种在功能上完全相同,只是前一种是基于Servlet2.3版本中新引入的Listener接口实现,而后一种是基于Servlet接口实现。
load-on-startup:加载顺序,如果该元素的值为负数或者没有设置,则容器会当Servlet被请求时再加载。如果值为正整数或者0时,表示容器在应用启动时就加载并初始化这个servlet,值越小,servlet的优先级越高,就越先被加载。值相同时,容器就会自己选择顺序来加载。
<listener>
<listener-class>org.springframework.context.ContextLoaderListener<listener-class>
<listener>
<servlet>
<servlet-name>context<servlet-name>
<servlet-class>org.springframework.context.ContextLoaderServlet<servlet-class>
<load-on-startup>1<load-on-startup>
<servlet>