Spring
Spring有什么好处
- Spring能消除在许多工程中常见的对Singleton的过多使用
- Spring能消除各种各样定义的属性文件的需要,使配置信息一元化。
- Spring能够帮助我们真正意义上实现针对接口编程。
- 使用Spring构建的应用程序易于单元测试
- Spring支持JDBC和O/R Mapping 产品(Hibernate)
- MVC Web 框架,提供一种清晰,无侵略性的MVC实现方式。
- JNDI抽象层,便于改变实现细节,可以方便地在远程服务和本地服务间切换
- 简化访问数据时的例外处理
- Spring能有效的阻止你的中间层对象
- 在Spring应用中的大多数业务对象没有依赖于Spring
- Spring能使用AOP提供声明性事物管理,可以不直接操作JTA也能对事务进行管理。
- 提供了JavaMail或其他邮件系统的支持。
控制反转
控制反转模式的基本概念是:不创建对象,但是描述创建他们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述那一个组件需要那一项服务。容器(在Spring框架中是IOC容器)负责将这些联系在一起。
IOC组件注入的方式:
- 接口注入
- 通过set方法注入(设值注入)
- 通过构造方法注入。
Bean工厂&ApplicationContext联系
- ApplicationContext 扩展Bean工厂接口
- ApplicationContext提供附加功能
- Bean工厂延迟加载所有的Bean,直到getBean被调用
- ApplicationContext在初始化自身时检验,为立即加载。这样有利于检查所依赖属性是否注入;所以通常情况下我们选择使用ApplicationContext
- Spring容器中的Bean缺省状态下是单态模式
应用上下文ApplicationContext
常用实现
- ClassPathXmlApplicationContext spring配置文件必须在src目录下
- FileSystemXmlApplicationContext 配置文件放在工程下
- XmlWebApplicationContext 根据布属路径寻找,webroot例如: ApplicationContext context = new ClassPathXMLApplicationContext("app*.xml")
Bean中id和name 的区别
- id是唯一标示bean.不能用特殊字符,X#@,不能用数字开头。在bean引用的时候只能有id指向你需要的bean
- name可以用特殊字符,并且一个bean可以用多个名称:name="bean1,bean2,bean3",用逗号隔开。如果没有id,则name的第一个名称默认是id。