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核心概念(二)的更多相关文章

  1. SSM 五:Spring核心概念

    第五章:Spring核心概念 一.Spring Ioc 优点: 1.低侵入式设计 2.独立于各种应用服务器 3.依赖注入特性将组建关系透明化,降低耦合度 4.面向切面编程的特性允许将通用性任务集中式处 ...

  2. Spring 核心概念

    Spring 核心概念 引言 本文主要介绍 Spring 源码中使用到的一些核心类 1. BeanDefinition BeanDefinition表示Bean定义,BeanDefinition 中存 ...

  3. Spring系列(一):Spring核心概念

    一.Spring概念 Spring是一种多层的J2EE应用程序框架,其核心就是管理资源组件以及依赖关系,Spring框架为现代基于java的企业应用程序提供了一个全面的编程和配置模型. 二.Sprin ...

  4. Spring核心概念和案例

    一.Spring概念 1.Spring框架概述 轻量级的Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建, Spring框架提供了一个开发平台,用于整合其他技 ...

  5. 第一章 spring核心概念

    一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...

  6. disruptor 核心概念 二

    一.Disruptor图解 二.disruptor核心概念 1.RingBuffer到底是啥?正如名字所说的一样,他是一个环(首尾相接的环)它用做在不同上下文(线程)间传递数据的buffer Ring ...

  7. Spring核心概念之AOP

    一.AOP 的概念 AOP(Aspect Oriented Programming)的缩写,面向切面编程,主要作用就是对代码进行增强处理. 理解面向切面编程的含义:就是在不改变原有程序的基础上为代码增 ...

  8. Spring 核心概念以及入门教程

    初始Spring 在学习Spring之前我们首先要了解一下企业级应用.企业级应用是指那些为商业组织,大型企业而创建并部署的解决方案及应用. 这些大型企业级应用的结构复杂,涉及的外部资源众多,事务密集, ...

  9. 自己实现spring核心功能 二

    前言 上一篇我们讲了spring的一些特点并且分析了需要实现哪些功能,已经把准备工作都做完了,这一篇我们开始实现具体功能. 容器加载过程 我们知道,在spring中refesh()方法做了很多初始化的 ...

随机推荐

  1. [Deep Learning] 神经网络基础【转】

    本文转载自:http://www.cnblogs.com/maybe2030/p/5597716.html 阅读目录 1. 神经元模型 2. 感知机和神经网络 3. 误差逆传播算法 4. 常见的神经网 ...

  2. myEclipse项目转成Eclipse项目

    这里说一种把myEclipse项目转成Eclipse项目继续开发 1.  请首先确保你的eclipse是javaee版本的,或者已经安装看wtp插件 2.  然后修改eclipse工程下的.proje ...

  3. Vue中使用百度地图——设置地图标注

    知识点:创建Map实例,为指定的位置设置标注 参考博客:https://www.cnblogs.com/liuswi/p/3994757.html 1.效果图:初始化地图,设置指定经纬度为地图中心点坐 ...

  4. vue编译环境和线上环境url切换

    新建一个配置js,导入到接口请求管理类,可以自动根据环境切换if (process.env.NODE_ENV == 'development') { baseUrl = ''; }else{ base ...

  5. 爬虫之JSON

    数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适 ...

  6. spark SQL学习(认识spark SQL)

    spark SQL初步认识 spark SQL是spark的一个模块,主要用于进行结构化数据的处理.它提供的最核心的编程抽象就是DataFrame. DataFrame:它可以根据很多源进行构建,包括 ...

  7. 解题报告:hdu2191汶川地震 - 多重背包模板

    2017-09-03 17:01:36 writer:pprp 这是一道多重背包裸题 - 记得是从右向左进行,还有几点需要注意啊,都在代码中表示出来了 代码如下: /* @theme:hdu2191 ...

  8. .net知识点汇总

    死锁的必要条件?怎么克服? 答:系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用 ...

  9. Location对象常用知识

    产品终于上线,后期主要是优化了.在开发过程中用到了很多location对象的知识,趁现在有时间先整理一下. Location 对象存储在 Window 对象的 Location 属性中,可通过wind ...

  10. apollo stomp client 代码示例

    0.环境准备 0.1.linux 0.2.java 0.3.下载apollo二进制包,解压 0.4.创建broker,名字为 userlog {APOLLO_HOME}/bin/apollo crea ...