Spring的基本用法
2015-08-09 11:02
337 查看
Spring优点:
(1)低侵入式设计,代码的污染极低。
(2)依赖注入提高了组件之间的解耦。依赖注入让Spring的Bean以配置文件组织在一起,而不是以硬编码的方式耦合在一起。
(3)AOP支持将一些通用任务如安全、事务、日志等进行集中式处理,提供了更好的复用。
Spring容器
ApplicationContext
ClassPathXmlApplicationContext
依赖注入的方式
(1)设值注入:使用属性的setter方法来注入被依赖的实例。
(2)构造注入:使用构造器来注入被依赖的实例。
设值注入优点:
(1)通过setter方法设定依赖关系显得更加直观、自然。
(2)对于复杂的依赖关系,采用构造注入会导致构造器过于臃肿,难以阅读。Spring在创建Bean实例时,需要同时实例化其依赖的全部实例,导致性能下降。使用设值注入能避免这些问题。
构造注入优点:
(1)构造注入可以在构造器中决定依赖关系的注入顺序,优先依赖的优先注入。
(2)对于依赖关系无需变化的Bean,构造注入更有好处。依赖关系在构造器中设定,则只有组件的创建者才能改变组件的依赖关系。
设值注入为主,构造注入为辅。
ApplicationContext的事件机制是观察者设计模式的实现。
在Web应用中,Spring容器通常采用声明式方式配置产生:开发者只要在web.xml文件中配置一个Listener,该Listener将会负责初始化Spring容器。前端MVC框架可以直接调用Spring容器(无需访问Spring容器本身)。在这种情况下,容器中Bean处于容器管理下,无需主动访问容器,只需接受容器的注入管理即可。Bean实例的依赖关系通常由容器动态注入,无需Bean实例主动请求。
容器中Bean的作用域
(1)singleton:单例模式,在整个Spring Ioc容器中,使用singleton定义的Bean将只有一个实例。
(2)prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例。
(3)request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例。
(4)session:对于每次HTTP Session,使用session定义的Bean都将产生一个新实例,即每次HTTP Session都将产生不同的Bean实例。
(5)global session:每个全局的HTTP Session对应一个Bean实例。
Spring默认使用singleton作用域。
使用自动装配注入合作者Bean
autowire属性
no:不使用自动装配。这是默认的配置。
byName:根据属性名自动装配。
byType:根据属性类型自动装配。
constructor:与byType类似,区别是用于构造注入的参数。
autodetect:BeanFactory根据Bean内部结构,决定使用constructor或byType。
(1)低侵入式设计,代码的污染极低。
(2)依赖注入提高了组件之间的解耦。依赖注入让Spring的Bean以配置文件组织在一起,而不是以硬编码的方式耦合在一起。
(3)AOP支持将一些通用任务如安全、事务、日志等进行集中式处理,提供了更好的复用。
Spring容器
ApplicationContext
ClassPathXmlApplicationContext
依赖注入的方式
(1)设值注入:使用属性的setter方法来注入被依赖的实例。
(2)构造注入:使用构造器来注入被依赖的实例。
设值注入优点:
(1)通过setter方法设定依赖关系显得更加直观、自然。
(2)对于复杂的依赖关系,采用构造注入会导致构造器过于臃肿,难以阅读。Spring在创建Bean实例时,需要同时实例化其依赖的全部实例,导致性能下降。使用设值注入能避免这些问题。
构造注入优点:
(1)构造注入可以在构造器中决定依赖关系的注入顺序,优先依赖的优先注入。
(2)对于依赖关系无需变化的Bean,构造注入更有好处。依赖关系在构造器中设定,则只有组件的创建者才能改变组件的依赖关系。
设值注入为主,构造注入为辅。
ApplicationContext的事件机制是观察者设计模式的实现。
在Web应用中,Spring容器通常采用声明式方式配置产生:开发者只要在web.xml文件中配置一个Listener,该Listener将会负责初始化Spring容器。前端MVC框架可以直接调用Spring容器(无需访问Spring容器本身)。在这种情况下,容器中Bean处于容器管理下,无需主动访问容器,只需接受容器的注入管理即可。Bean实例的依赖关系通常由容器动态注入,无需Bean实例主动请求。
容器中Bean的作用域
(1)singleton:单例模式,在整个Spring Ioc容器中,使用singleton定义的Bean将只有一个实例。
(2)prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例。
(3)request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例。
(4)session:对于每次HTTP Session,使用session定义的Bean都将产生一个新实例,即每次HTTP Session都将产生不同的Bean实例。
(5)global session:每个全局的HTTP Session对应一个Bean实例。
Spring默认使用singleton作用域。
使用自动装配注入合作者Bean
autowire属性
no:不使用自动装配。这是默认的配置。
byName:根据属性名自动装配。
byType:根据属性类型自动装配。
constructor:与byType类似,区别是用于构造注入的参数。
autodetect:BeanFactory根据Bean内部结构,决定使用constructor或byType。
相关文章推荐
- java数据类型讲解
- spring 定时器
- 用记事本写一个简单的java程序
- 常用数制的输入与输出(JAVA)
- Java 两个方法彼此调用导致java.lang.StackOverflowError
- Java Web前后端分离的思考与实践
- Java中的50个关键字
- 【Java多线程】之五:wait, notify and notifyAll
- 重学java23种设计模式(14)命令模式
- java静态代码块真的会优先执行吗
- Java读取文件MD5的两种方案
- java中图的两种存储方式
- Java学习之路:不走弯路,就是捷径
- 编码剖析Spring装配基本属性的原理
- JAVA环境变量配置
- Java字符串和输入流的相互转换
- Java中方法名和类名的规范
- java 单例模式
- Spring整合Hibernate遇到的错误
- JAVA环境变量配置