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. Kafka学习之(三)Centos下给PHP开启Kafka扩展(rdkafka)

    Centos版本:Centos6.4,PHP版本:PHP7. 在上一篇文章中使用IP为192.168.9.154的机器安装并开启了Kafka进行了简单测试,充当了Kafka服务器. 本篇文章新开启一台 ...

  2. 20145312 实验五《Java网络编程》

    20145312 实验五<Java网络编程> 一. 实验内容及要求 实验内容: 运行下载的TCP代码,结对进行,一人服务器,一人客户端: 利用加解密代码包,编译运行代码,一人加密,一人解密 ...

  3. 20145329 《Java程序设计》实验五总结

    实验内容: 1.用老师代码编写,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传 ...

  4. LeetCode——Single Element in a Sorted Array

    Question Given a sorted array consisting of only integers where every element appears twice except f ...

  5. LA 5135 井下矿工(点—双连通分量模板题)

    https://vjudge.net/problem/UVALive-5135 题意:在一个无向图上选择尽量少的点涂黑,使得任意删除一个点后,每个连通分量至少有一个黑点. 思路: 首先dfs遍历求出割 ...

  6. 我的nlp之路(1)

    1/8日任务 基础篇: 如何使用远程连接从windows或者linux连到服务器进行操作(切换用户,传递文件) (严禁使用root账户) Linux基本bash命令 a)        查看文件大小, ...

  7. Ubuntu16.04 安装openssl

    1 下载 https://www.openssl.org/source/ 2 解压 3 安装 # ./config --prefix=/usr/local --openssldir=/usr/loca ...

  8. 深入浅出-Binding的源与路径

    1.把控件作为Binding源与Binding标记扩展<TextBox x:Name="textBox1" Text="{Binding Path=Value, E ...

  9. python脚本10_打印斐波那契数列的第101项

    #打印斐波那契数列的第101项 a = 1 b = 1 for count in range(99): a,b = b,a+b else: print(b) 方法2: #打印斐波那契数列的第101项 ...

  10. MS SQL2008执行大脚本文件时,提示“内存不足”的解决办法

    问题描述: 当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库, 但是当数据库导出脚本很大,用Microsoft SQL Server Management Studio执行 ...