我对Spring的理解。
1.Spring实现了工厂模式的工厂类(在这里有必要解释清楚什么是工厂模式),这个类名为BeanFactory(实际上是一个接口),在程序中通常BeanFactory的子类ApplicationContext。Spring相当于一个大的工厂类,在其配置文件中通过<bean>元素配置用于创建实例对象的类名和实例对象的属性。
2. Spring提供了对IOC良好支持,IOC是一种编程思想,是一种架构艺术,利用这种思想可以很好地实现模块之间的解耦。IOC也称为DI(Depency Injection),什么叫依赖注入呢?
譬如,Class Programmer
{
Computer computer = null;
public void code()
{
//Computer computer = new IBMComputer();
//Computer computer = beanfacotry.getComputer();
computer.write();
}
public void setComputer(Computer computer)
{
this.computer = computer;
}
}
另外两种方式都由依赖,第一个直接依赖于目标类,第二个把依赖转移到工厂上,第三个彻底与目标和工厂解耦了。在spring的配置文件中配置片段如下:
<bean id=”computer” class=”cn.itcast.interview.Computer”>
</bean>
<bean id=”programmer” class=”cn.itcast.interview.Programmer”>
<property name=”computer” ref=”computer”></property>
</bean>
3. Spring提供了对AOP技术的良好封装, AOP称为面向切面编程,就是系统中有很多各不相干的类的方法,在这些众多方法中要加入某种系统功能的代码,例如,加入日志,加入权限判断,加入异常处理,这种应用称为AOP。实现AOP功能采用的是代理技术,客户端程序不再调用目标,而调用代理类,代理类与目标类对外具有相同的方法声明,有两种方式可以实现相同的方法声明,一是实现相同的接口,二是作为目标的子类在,JDK中采用Proxy类产生动态代理的方式为某个接口生成实现类,如果要为某个类生成子类,则可以用CGLI
B。在生成的代理类的方法中加入系统功能和调用目标类的相应方法,系统功能的代理以Advice对象进行提供,显然要创建出代理对象,至少需要目标类和Advice类。spring提供了这种支持,只需要在spring配置文件中配置这两个元素即可实现代理和aop功能,例如,
<bean id=”proxy” type=”org.spring.framework.aop.ProxyBeanFactory”>
<property name=”target” ref=””></property>
<property name=”advisor” ref=””></property>
</bean>
最新文章
- tomcate端口设定和服务器虚拟目录设定
- [转]C#中POST数据和接收的几种方式
- jahshaka 2.0 环境配置
- 汉化PLSQL怎么改变字体的大小及关键字颜色
- 多线程编程之Linux环境下的多线程(二)
- Linux PostgreSQL 基础配置指南
- Spark简述及基本架构
- auto_ptr and scoped_ptr
- 6、Cocos2dx 3.0游戏开发的基本概念找个小三场比赛
- 读书笔记—CLR via C#委托和attribute
- position:sticky 定位 position:fixed
- Java之split方法
- Python的布尔值与空值
- MySQL主从介绍 准备工作 配置主 配置从 测试主从同步
- YSQL获取自增ID的四种方法(转发)
- Java中断异常 InterruptedException 的正确处理方式
- JBOSS安装与配置搭建本地项目环境(方便前端开发调式)
- NSwag enum
- JDBC 调用存储过程代码示例
- HTML中table的td宽度无法固定问题
热门文章
- SpriteBuilder&;Cocos2D使用CCEffect特效实现天黑天亮过度效果
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(八):为动画建立属性列表
- 【Unity Shaders】Lighting Models 介绍
- Eclipse中查看没有源码的Class文件的方法
- 【Android 应用开发】 Application 使用分析
- JAVA内部类_1
- 小强的HTML5移动开发之路(8)——坦克大战游戏2
- iOS开发 runtime实现原理以及实际开发中的应用
- Leetcode_111_Minimum Depth of Binary Tree
- JQuery实战总结三 标签页效果图实现