【Java】关于Spring框架的总结 (二)
2018-06-27 09:46:38来源:博客园 阅读 ()
上文提到了 Spring 的 IoC 特性和 AOP 特性,只提到个别的实现方法。本文将对 IoC 和 AOP 其他方法进行讲解。
多种方式实现依赖注入
1.设值注入
上文中使用的注入方法:通过 setter 访问器实现对属性的赋值。
2.构造注入
通过类的构造方法实现属性的注入。
如何通过构造注入为业务类注入所依赖的数据访问层对象?下面是步骤
1)获取Spring开发包并为工程添加Spring支持。
2)为业务层和数据访问层设计接口,声明所需方法。
3)编写数据访问层接口UserDao的实现类,完成具体的持久化操作。
4)在业务实现类中声明UserDao接口类型的属性,并添加适当的构造方法为属性赋值。
5)在Spring的配置文件中将DAO对象以构造注入的方式赋值给业务实例中的 UserDao 类型的属性。
6)在代码中获取Spring配置文件中装配好的业务类对象,实现程序功能。
一个 <constructor-arg> 元素表示构造方法的一个参数,且使用时不区分顺序。当构造方法的参数出现混淆,无法区分时,可以通过 <constructor-arg> 元素的 index 属性指定该参数的位置索引,位置从0开始。
3.使用 p 命名空间实现属性注入
p 命名空间的特点是使用属性而不是子元素的形式配置 Bean 的属性,从而简化了 Bean 的配置。注意使用前要先添加 p 命名空间的声明。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
对于直接量(基本数据类型、字符串)属性 语法:
p:属性名="属性值"
对于引用 Bean 的属性 语法:
p:属性名-ref="Bean的id"
注入不同的数据类型
1.注入直接量(基本数据类型、字符串)
对于基本数据类型及其包装类、字符串,除了可以使用value属性,还可以通过 <value> 子元素进行注入。
2.引用其他 Bean 组件
Spring 中定义的 Bean 可以互相引用,从而建立依赖关系,除了使用 ref 属性,还可以通过 <ref> 子元素实现。
3.使用内部 Bean
如果一个Bean组件仅在一处需要使用,可以把它定义为内部Bean。
4.注入集合类型的属性
对于 List 或数组类型的属性,可以使用 <list> 标签注入。
<property name="hobbies"> <list> <value>足球</value> <value>篮球</value> </list> </property>
对于 Set 类型的属性,可以使用 <set> 标签注入。
<property name="hobbies"> <set> <value>足球</value> <value>篮球</value> </set> </property>
对于 Map 类型的属性,可以使用 <map> 标签注入。
<property name="hobbies"> <map> <entry> <key><value>football</value></key> <value>足球</value> <entry> <entry> <key><value>basketball</value></key> <value>篮球</value> <entry> </map> </property>
对于 Properties 类型的属性,可以使用 <props> 标签注入。
<property name="hobbies"> <props> <prop key="football">足球</prop> <prop key="basketball">篮球</prop> </props> </property>
5.注入 null 和空字符串值
<!-- 注入空字符串值 --> <bean id="user" class="pojo.User"> <property name="email"><value></value></property> </bean> <!-- 注入 null 值 --> <bean id="user" class="pojo.User"> <property name="email"><null/></property> </bean>
其他增强类型
1.异常抛出增强
异常抛出增强的特点是在目标方法抛出异常时织入增强代码。使用异常抛出增强,可以为各功能模块提供统一的、可拔插的异常处理方案。
在增强类中添加异常抛出增强代码
在配置文件中添加异常抛出增强相关配置
2.最终增强
最终增强的特点是无论方法抛出异常还是正常退出,该增强都会得到执行,类似于异常处理机制中的 finally 块的作用,一般用于释放资源。
在增强类中添加最终增强代码
在配置文件中添加最终增强相关配置
3.环绕增强
环绕增强在目标方法的前后都可以织入增强处理。环绕增强是功能最强大的增强处理,Spring 把目标方法的控制权全部交给了它。在环绕增强处理中,可以获取或修改目标方法的参数、返回值,可以对它进行异常处理,甚至可以决定目标方法是否被执行。
在增强类中添加环绕增强代码
在配置文件中添加环绕增强相关配置
下次更新Spring注解相关配置
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:配置JAVA环境和Maven环境
下一篇:Spring Boot学习路线
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- Spring系列.ApplicationContext接口 2020-06-11
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash