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()方法做了很多初始化的 ...
随机推荐
- Kafka学习之(一)了解一下Kafka及关键概念和处理机制
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模小打的网站中所有动作流数据.优势 高吞吐量:非常普通的硬件Kafka也可以支持每秒100W的消息,即使在非常廉价的商用机器上也能做 ...
- awk循环语句-【AWK学习之旅】
AWK中两种循环语句:if-else 和 while 控制流语句: 1.if-else 求总数,平均值: [root@monitor awkdir]# awk '$3>6 {n = n ...
- linux版本安装pip
因为一直在windows开发python程序,今天把python程序打成docker image镜像的时候,发现pip无法使用,并且使用yum 也无法安装,查找资料发现下面方法可用 1.python ...
- 20144303 《Java程序设计》第六周学习总结
20144303 <Java程序设计>第六周学习总结 教材学习内容总结 第十章输入和输出 Java是以串流(Stream)的方式来处理输入与输出. 串流是一种抽象观念,从键盘输入资料,将处 ...
- [CF730J]Bottles
题目大意:每个瓶子有一定的容积,以及一定的水量,问最少几个瓶子装满所有水,在此基础上还要最小化移动水的体积 第一问用贪心直接求第二问转化成背包问题设dp[i][j]表示前i桶水总容积为j的最多水量,这 ...
- 线程实现Runnable接口比继承Thread的优势
1.适合多个相同程序代码的线程去处理同一资源,把虚拟CPU(线程)同程序的代码.数据有效分离,较好地体现了面向对象的设计思想.2.可以避免由于java单继承特性带来的局限.3.增强了程序的健壮性,代码 ...
- springMvc REST 请求和响应
前言: 突然怎么也想不起来 springMvc REST 请求的返回 类型了! (尴尬+究竟) 然后本着 方便的想法 百度了一下 发现了个问题,大家在写 springMvc RES ...
- MySQL MVVC
什么是MVVC? MVVC (Multi-Version Concurrency Control) (注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Contr ...
- EclipseError01
1.错误:“javax.servlet.http.httpservlet was not found on the Java Build Path” 1.1. 项目上右键-->Build Pat ...
- IE 中的 button type默认值问题
今天遇到一个问题. 将项目页面的渲染模式从 IE7 改为 IE10 后(<meta http-equiv="X-UA-Compatible" content="IE ...