控制反转:

Inversion on Control , 控制反转 IOC

对象的创建交给外部容器完成,这个就做控制反转.

依赖注入,  dependency injection

处理对象的依赖关系

区别:

控制反转, 解决对象创建的问题 【对象创建交给别人】

依赖注入,

在创建完对象后, 对象的关系的处理就是依赖注入 【通过set方法依赖注入】

AOP

面向切面编程。切面,简单来说来可以理解为一个类,由很多重复代码形成的类。

切面举例:事务、日志、权限;

1) 源码, jar文件:spring-framework-3.2.5.RELEASE

commons-logging-1.1.3.jar           日志

spring-beans-3.2.5.RELEASE.jar        bean节点

spring-context-3.2.5.RELEASE.jar       spring上下文节点

spring-core-3.2.5.RELEASE.jar         spring核心功能

spring-expression-3.2.5.RELEASE.jar    spring表达式相关表

以上是必须引入的5个jar文件,在项目中可以用户库管理!

2) 核心配置文件: applicationContext.xml

Spring配置文件:applicationContext.xml / bean.xml

约束参考:

spring-framework-3.2.5.RELEASE\docs\spring-framework-reference\htmlsingle\index.html

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="

        http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context.xsd">

</beans>

public class App {

// 1. 通过工厂类得到IOC容器创建的对象

@Test

public void testIOC() throws Exception {

// 创建对象

// User user = new User();

// 现在,把对象的创建交给spring的IOC容器

Resource resource = new ClassPathResource("cn/itcast/a_hello/applicationContext.xml");

// 创建容器对象(Bean的工厂), IOC容器 = 工厂类 + applicationContext.xml

BeanFactory factory = new XmlBeanFactory(resource);

// 得到容器创建的对象

User user = (User) factory.getBean("user");

System.out.println(user.getId());

}

//2. (方便)直接得到IOC容器对象

@Test

public void testAc() throws Exception {

// 得到IOC容器对象

ApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/a_hello/applicationContext.xml");

// 从容器中获取bean

User user = (User) ac.getBean("user");

System.out.println(user);

}

}

最新文章

  1. Oracle中日期时间的操作比较和加减-入门基础(转)
  2. 利用 Android Gradle 瘦身 apk
  3. work5
  4. 滚动新闻插件vticker
  5. 更新Xcode7 后 .dylib变成了.tbd的问题解决
  6. Android 播放声音
  7. php Excel文件导入 Spreadsheet_Excel_Reader
  8. [转载] Java并发编程:Lock
  9. Oracle中rownum原理介绍
  10. 《java入门第一季》之面向对象(方法重写问题)
  11. 安卓笔记--- intent传递自定义类
  12. &lt;mate name=&quot;viewport&quot;&gt;移动端设置详解
  13. Spark SQL 编程初级实践
  14. python3+redis问题求解
  15. css利用padding百分比实现图片自适应高度
  16. Java并发编程基础-线程安全问题及JMM(volatile)
  17. node学习笔记_04 express相册
  18. 58A
  19. C++外观模式和组合模式
  20. Android 第三方分享中遇到的问题以及解决方式

热门文章

  1. python爬虫06 | 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍
  2. ACDream - Lowbit Sum
  3. zabbix ipmi
  4. iOS_25_彩票设置的cell的数据源模型的封装
  5. plsql developer ini
  6. OpenStack开发基础-oslo.config
  7. HDU 2830 Matrix Swapping II (预处理的线性dp)
  8. PHP自己定义函数及数组
  9. xcode Automatic signing is unable to resolve an issue with the &quot;ShowCar-IOS&quot; target&#39;s entitlements
  10. C++静态变量本身可否是一个实例对象