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()方法做了很多初始化的 ...
随机推荐
- Ubuntu 使用root登陆界面
打开终端开启root账户 :sudo passwd -u root 输入当前用户的密码 2.为root账户设置密码:sudo passwd root 设置root密码,输入两次 3.进入到/usr/s ...
- [BZOJ1576]安全路经Travel
题目大意:从1号点出发,到每个点的最短路的最后一条边不能被访问,求此时1号点到其他点的最短路 建立最短路树,对于一条非树边,把它加进去会形成一个环和一条链,如图: 即红色和蓝色路径构成的图,它的长度为 ...
- centos 查询mysql配置文件位置
具体指令: 1.which mysqld (”which 文件名“ : 搜索命令所在路径及别名) 2./usr/sbin/mysqld --verbose --help | grep -A 1 'D ...
- 为什么说git比svn好
http://blog.jobbole.com/20069/ git的权限控制,可以借助第三方的工具来实现 也快成使用git的子模块 http://www.cnblogs.com/aga-j/arch ...
- ThinkPHP的URL重写时遇到No input file specified的解决方法
因为在Fastcgi模式下,php不支持rewrite的目标网址的PATH_INFO的解析 ThinkPHP运行在URL_MODEL=2时,会出现 No input file specified.的情 ...
- spring boot2.1读取 apollo 配置中心1
第一篇:搭建apollo配置中心 为什么选择apollo,我做了一些对比: Diamond Disconf Apollo Spring Cloud Config 数据持久性 mysql mysql ...
- 综合一句话Shell破解
之前我在论坛发过了一句话的破解工具. 所以决定还是在基础上在改改,符合某些人的利用. 上一版只支持HTTPS/ASPX,这次改进后,也算是最后一版. 支持:PHP/HTTP/HTTPSASPX/HTT ...
- R 中的哪些命令或者包让你相见恨晚?--转载知乎
https://www.zhihu.com/question/24501195 节选: 看了这么多答案,觉得 Hadley Wickhamhad.co.nz 在R使用者的地位好高啊.其实我也觉得Had ...
- webstorm的安装、激活码、更换主题颜色的修改、汉化
一.安装 1.解压webstorm11zh.rar,双击.exe文件,下一步安装,在安装结束前会提示输入激活码,这个从网上随便找一个可用的即可. 二.更换主题颜色: 1.先从网上找一个喜欢的主题颜色, ...
- cassandra 之 在spark-shell 中使用 spark cassandra connector 完整案例
1.cassandra 准备 启动cqlsh, CQLSH_HOST=172.16.163.131 bin/cqlsh cqlsh>CREATE KEYSPACE productlogs WIT ...