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>

最新文章

  1. tomcate端口设定和服务器虚拟目录设定
  2. [转]C#中POST数据和接收的几种方式
  3. jahshaka 2.0 环境配置
  4. 汉化PLSQL怎么改变字体的大小及关键字颜色
  5. 多线程编程之Linux环境下的多线程(二)
  6. Linux PostgreSQL 基础配置指南
  7. Spark简述及基本架构
  8. auto_ptr and scoped_ptr
  9. 6、Cocos2dx 3.0游戏开发的基本概念找个小三场比赛
  10. 读书笔记—CLR via C#委托和attribute
  11. position:sticky 定位 position:fixed
  12. Java之split方法
  13. Python的布尔值与空值
  14. MySQL主从介绍 准备工作 配置主 配置从 测试主从同步
  15. YSQL获取自增ID的四种方法(转发)
  16. Java中断异常 InterruptedException 的正确处理方式
  17. JBOSS安装与配置搭建本地项目环境(方便前端开发调式)
  18. NSwag enum
  19. JDBC 调用存储过程代码示例
  20. HTML中table的td宽度无法固定问题

热门文章

  1. SpriteBuilder&amp;Cocos2D使用CCEffect特效实现天黑天亮过度效果
  2. Cocos2D iOS之旅:如何写一个敲地鼠游戏(八):为动画建立属性列表
  3. 【Unity Shaders】Lighting Models 介绍
  4. Eclipse中查看没有源码的Class文件的方法
  5. 【Android 应用开发】 Application 使用分析
  6. JAVA内部类_1
  7. 小强的HTML5移动开发之路(8)——坦克大战游戏2
  8. iOS开发 runtime实现原理以及实际开发中的应用
  9. Leetcode_111_Minimum Depth of Binary Tree
  10. JQuery实战总结三 标签页效果图实现