Spring核心概念(二)
IOC/DI
IOC(控制反转):对象(组件)的创建由代码中转移到外部容器(XML,注解) .
DI(依赖注入):当类A需要使用类B时,那么我们需要为类A的属性赋值类B的对象.
这种现象我们称为依赖注入.
注意:IOC/DI指的是同一个东西,理解的角度不一样.
补充:组件化思想:分离关注点,使用接口,不再关注实现.
AOP(面向切面编程)
AOP:是一种通过预编译和运行期动态代理的方式实现在
不修改源代码的情况下给程序动态添加功能的技术.
原理:
a.将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决.
b.采用代理机制组装起来运行,在不改变原程序的基础上对
代码段进行增强处理,增加新的功能.
术语:
增强处理(Advice)
前置增强
后置增强
环绕增强、异常抛出增强、最终增强等类型.
切入点(Pointcut)
连接点(Join Point)
切面(Aspect):切入点+增强处理.
目标对象(Target object)
AOP代理(AOP proxy)
织入(Weaving)
开发步骤:
第一步:写增强功能
第二步:配置核心文件
<!-- 注册增强类 -->
<bean id="tp" class="增强类">
<!-- 配置切面-->
<aop:config>
<!-- 配置切入点-->
<aop:pointcut id="名称" expression="
execution(匹配类和方法的表达式)
"/>
<!-- 配置切面-->
<aop:aspect ref="增强类的id">
<!-- 切面的增强方法和切入点 -->
<aop:before method="增强方法" pointcut-ref="切入点的id" />
</aop:aspect>
</aop:config>
第三步:测试
匹配表达式
public * addUser(entity.User) //"*":任意返回值类型.
public void *(entity.User) //"*":任意方法名
public void addUser(..) //"..":任意个任意类型的参数
* com.service.*.*(..) //com.service包下的所有直接子类的所有方法.
* com.service..*.*(..) //com.service包及其所有子包的所有类的所有方法.
Spring核心概念(二)的更多相关文章
- SSM 五:Spring核心概念
第五章:Spring核心概念 一.Spring Ioc 优点: 1.低侵入式设计 2.独立于各种应用服务器 3.依赖注入特性将组建关系透明化,降低耦合度 4.面向切面编程的特性允许将通用性任务集中式处 ...
- Spring 核心概念
Spring 核心概念 引言 本文主要介绍 Spring 源码中使用到的一些核心类 1. BeanDefinition BeanDefinition表示Bean定义,BeanDefinition 中存 ...
- Spring系列(一):Spring核心概念
一.Spring概念 Spring是一种多层的J2EE应用程序框架,其核心就是管理资源组件以及依赖关系,Spring框架为现代基于java的企业应用程序提供了一个全面的编程和配置模型. 二.Sprin ...
- Spring核心概念和案例
一.Spring概念 1.Spring框架概述 轻量级的Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建, Spring框架提供了一个开发平台,用于整合其他技 ...
- 第一章 spring核心概念
一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...
- disruptor 核心概念 二
一.Disruptor图解 二.disruptor核心概念 1.RingBuffer到底是啥?正如名字所说的一样,他是一个环(首尾相接的环)它用做在不同上下文(线程)间传递数据的buffer Ring ...
- Spring核心概念之AOP
一.AOP 的概念 AOP(Aspect Oriented Programming)的缩写,面向切面编程,主要作用就是对代码进行增强处理. 理解面向切面编程的含义:就是在不改变原有程序的基础上为代码增 ...
- Spring 核心概念以及入门教程
初始Spring 在学习Spring之前我们首先要了解一下企业级应用.企业级应用是指那些为商业组织,大型企业而创建并部署的解决方案及应用. 这些大型企业级应用的结构复杂,涉及的外部资源众多,事务密集, ...
- 自己实现spring核心功能 二
前言 上一篇我们讲了spring的一些特点并且分析了需要实现哪些功能,已经把准备工作都做完了,这一篇我们开始实现具体功能. 容器加载过程 我们知道,在spring中refesh()方法做了很多初始化的 ...
随机推荐
- 20145302张薇《Java程序设计》实验二报告
20145302张薇<Java程序设计>实验二:Java面向对象程序设计 使用TDD的方式设计实现复数类:Complex 测试代码 import org.junit.Test; publi ...
- 20145313Java第一次实验
实验内容 1.JVM.JRE.JDK的安装位置与区别: 2.命令行运行javac:java:javac -cp; java -cp: 3.PATH,CLASSPATH,SOURCEPATH的设定方法与 ...
- MysQL使用一高级应用(下)
连接查询 连接查询分类如下: 表A inner join 表B:表A与表B匹配的行会出现在结果中 表A left join 表B:表A与表B匹配的行会出现在结果中,外加表A中独有的数据,未对应的数据使 ...
- 分布式系列 - dubbo服务发布
单元测试OK,封装为Dubbo服务. 添加依赖 pom.xml <properties> <dubbo.version>2.5.3</dubbo.ve ...
- 管理账号密码的工具-KeePass使用方法
附件链接:https://files.cnblogs.com/files/stxs/KeePass.zip 打开压缩包“KeePass.zip",将文件"KeePass.exe&q ...
- Maven的继承和聚合
Maven的继承和聚合子项目的pom文件里通过<parent>节点来继承父项目 <parent> <groupId>com.tykj</groupId> ...
- Java虚拟机组成详解
导读:详细而深入的总结,是对知识“豁然开朗”之后的“刻骨铭心”,想忘记都难. Java虚拟机(Java Virtual Machine)下文简称jvm,上一篇我们对jvm有了大体的认识,进入本文之后我 ...
- mysql数据库优化课程---16、mysql慢查询和优化表空间
mysql数据库优化课程---16.mysql慢查询和优化表空间 一.总结 一句话总结: a.慢查询的话找到存储慢查询的那个日志文件 b.优化表空间的话可以用optimize table sales; ...
- #if 0 #endif && #if 1 #endif ----待整理
在看一个 usbcan 的上位机例程中发现了这个,于是百度下,记录下来.(参考:http://nevel.cnblogs.com/p/6378035.html)
- JSP 页面重定向
当需要将文档移动到一个新的位置时,就需要使用JSP重定向了. 最简单的重定向方式就是使用response对象的sendRedirect()方法.这个方法的签名如下: public void respo ...