对Spring框架的理解
来源:互联网 发布:软件检测报告模板 编辑:程序博客网 时间:2024/05/16 05:23
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
一、Spring的作用
Spring 框架主要负责技术整合(可以整合很多技术),该框架提供控制反转(IoC)和面向切面(AOP) 机制,基于这些特性的整合,可以降低系统组件间的耦合度,便于系统组件的维护、扩展和替换。在 SSH 中,主要是利用 Spring 容器管理我们程序中的Action、DAO 等组件,通过容器的 IoC 机制,可以降低 Action、 DAO 之间的耦合度,利用 AOP 进行事务管理等共通部分的处理。 Struts2 主要是利用它的控制器,而不是标签、表达式; Hibernate 主要利用它的数据库访问。
二、Spring 的核心
Spring 框架的核心是提供了一个容器。该容器类型是 BeanFactory 或 ApplicationContext。
该容器具有以下功能:
1、容器可以创建和销毁组件对象,等价于原来“工厂”类的作用。
2、容器可以采用不同的模式创建对象,如单例模式创建对象。
3、容器具有 IoC 机制实现。
4、容器具有 AOP 机制实现。
三、Spring容器的应用
1、如何将一个 Bean 组件交给 Spring 容器
(1)Bean 组件其实就是个普通的 Java 类!
(2)方法:在 applicationContext.xml 中添加以下定义。
<bean id="标识符" class="Bean 组件类型"></bean>
2、如何获取 Spring 容器对象和 Bean 对象
(1) 实例化容器:
ApplicationContext ac=new ClassPathXmlApplicationContext("/applicationContext.xml");//去 Class 路径找
//FileSystemXmlApplicationContext("");//去指定的磁盘目录找
(2)利用 getBean("标识符")方法获取容器中的 Bean 对象。
3、如何控制对象创建的模式
Spring 支持 singleton(单例)和 prototype(原型,非单例)两种模式。默认是 singleton 模式,可以通过<bean>的 scope
属性修改为 prototype 模式。
例: <bean id="标识符" class="Bean 组件类型" scope="singleton">
</bean>
注意:对于有些项目,一个请求创建一个 Action,肯定不是单例模式,所以用 Spring 时必须指明 prototype,否则默认使用
singleton 会出问题。而 DAO中唯一的状态就是数据库连接,则可用 singleton 模式。service作为业务逻辑层,其成员变量
均为dao,还有一个封装的接口,service也为单例。
4、Bean的作用域
Bean的作用域可以通过Bean标签的scope属性进行设置,Bean的作用域包括以下几种:
(1)默认情况下scope="singleton",那么该Bean是单例,任何人获取该Bean实例的都为同一个实例;
(2)scope="prototype",任何一个实例都是新的实例;
(3)scope="request",在web应用程序中,每一个实例的作用域都为request范围;
(4)scope="session",在web应用程序中,每一个实例的作用域都为session范围;
5、Bean 对象创建的时机
(1) singleton 模式的 Bean 组件是在容器实例化时创建。
(2) prototype 模式是在调用 getBean()方法时创建。
(3) singleton 模式可以使用<bean>元素的 lazy-init="true"属性将对象的创建时机推迟到调用 getBean()方法。也可以在
<beans>(根元素)中使用 default-lazy-init="false"推迟所有单例Bean 组件的创建时机。
例:<bean id="标识符"class="Bean 组件类型"scope="singleton" lazy-init="true"></bean>
<beans ...... default-lazy-init="false"></beans>
6、为 Bean 对象执行初始化和销毁方法
(1)初始化:
①可以利用<bean>元素的 init-method="方法名"属性指定初始化方法。
②指定的初始化方法是在构造方法调用后自动执行。若非单例模式,则每创建一个对象,则执行一次初始化方法。
注意:初始化的三种方式:写构造方法中; 或写{ (代码块)}中; Spring 框架中<bean>元素写 init-method="方法名"属性。
初始化时不能用 static{ },它是类加载调用,比创建对象要早。
(2) 销毁:
①可以利用<bean>元素的 destroy-method="方法名"属性执行销毁方法。
②指定的销毁方法是在容器关闭时触发,而且只适用于 singleton 模式的组件(只能为单例模式)。
7、Spring 中各种类型的数据注入
(1)、Bean 对象注入
<property name="属性名" ref="要注入的 Bean 对象的 id 值"></property>
(2)、基本数据的注入
<property name="属性名" value="要注入的值"></property>
(3)、集合的注入
①、List、 Set
<property name="集合属性名"><list><!-- 普通值用<value>标签, 对象用<bean>标签 --><value>集合中的值 1</value><value>集合中的值 2</value></list></property>
②Map<property name="集合属性名"><map><!-- 普通值用<value>标签, 对象用<bean>标签 --><entry key="键 1" value="值 1"></entry><entry key="键 2" value="值 2"></entry> </map></property>
③ Properties<property name="集合属性名"><props><prop key="键 1">值 1</prop><prop key="键 2">值 2</prop> </props></property>
④特殊用法: set 方法接收字符串,内部进行处理(如分割),再存入集合属性<property name="集合属性名" value="字符串 "></property>
- 对spring框架的理解
- 对Spring框架的理解
- 对Spring框架的理解
- 对Spring框架的一些理解
- 谈谈你对Spring框架的理解
- 谈谈对Spring框架的理解
- 一个牛人对spring框架的理解
- 一个牛人对spring框架的理解
- 对Spring框架思想中依赖注入的理解
- 对SSH(Struct、Spring、Hibernate)框架的理解
- 对框架的理解
- Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解
- 对SPRING的理解
- 对Spring 的理解
- 对Spring的理解
- 对Spring的理解
- 对spring的理解
- 对Spring的理解
- 历届试题 矩阵翻硬币(数学题,大数开根)
- solr使用流程
- Android学习总结之开发工具AndroidStudio的安装与配置
- Flex 布局教程:语法篇
- 最近项目需求要利用蓝牙广播数据,以前没搞过,很头疼,查了很多资料,决定写一篇,供有需求者使用.(第一次写博客,大家多多指教)
- 对Spring框架的理解
- AndroidStudio集成Freeline实现秒级编译
- 1005 Number Sequence
- gulp学习之四------编译 LESS
- 使用java客户端操作elasticsearch
- Sobel算子 原理
- 解决refinition
- 关于iOS学习进阶的必读一些博客总结
- base64_encode(rsa()) 加解密内容给大家分享