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