spring好处:spring能有效组织你的中间层对象spring能够消除在许多工程中常见的对singleton的过多使用spring能够消除各种自定义格式的属性文件的需要,使配置信息一元化spring能够帮助我们真正意义上实现针对接口编程在spring应用中的大多数业务对对象没有依赖于spring使用spring构建的应用程序易于单元测试spring支持jdbc和O/R Mapping产品(Hibernate)MVC WEB 框架,提供一种清晰,无侵略性的MVC实现方式。spring能使用AOP提供声明性事务管理,可以不直接操作JTA也能够对事务进行管理。提供了javaMail或其他邮件系统的支持。Spring的Ioc/DIIoc(Inversion of Control 控制反转)控制反转模式的基本概念是:不创建对象,但是描述创建他们的方法。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要那一项服务。容器(在spring框架中是Ioc容器)负责将这些联系在一起。配置文件放在src目录下和放在工程下的区别:Ioc组件注入的方式:1、接口注入2、通过set方法注入(设值注入)3、通过构造方法注入。spring容器:1、BeanFactory:简单,提供基础DI2、应用上下文ApplicationConext两着之间的联系:ApplicationConext扩展Bean工厂接口ApplicationConext提供附加功能Bean工厂延迟加载所有的Bean,直到getBean被调用ApplicationConext则在初始化自身时检验,为立即加载。这样有利于检查所依赖属性是否注入;所以通常情况下我们选择使用ApplicationConextspring容器中的Bean缺省状态下是单态模式(即单例模式)常用实现:classPathXmlApplicationContext spring配置文件必须放在src目录下FileSystemXmlApplicationContext 配置文件放在工程下XmlWebApplicationContext 根据部署路径寻找,webroot。例如:ApplicationConext contenxt = new classPathXmlApplicationContext("app*.xml")Bean中id和nama的区别id是唯一标识bean。不能用特殊字符:x@#等开头。在bean隐用的时候只个能有id指向你需要的idname可以用特殊字符,并且一个bean可以用多个名称。如果没有id则name的第一个名称默认是id。