Spring框架--IOC
2016-12-03 23:58
344 查看
传统方式(没使用Spring)-->在程序的分层开发中,各层之间必定需要依赖关系存在,而根据依赖关系可以分为--0耦合(这是无法协同工作的),具体耦合(具象与具象之间发生依赖关系,在各自的代码中直接各自实例化创建对象),抽象耦合(通过抽象层实现两者的依赖关系,接口之类)。在第三种关系中实现了依赖的倒转,即是从上层调用下层的方式变成了上层调用抽象层,下层实现各自的接口。
在spring中,这种依赖关系由spring容器来维护,控制权反转(I OC),对象的生命周期的维护权限也移交给了容器。传统的方式就好像要用到机器去工作时,然后才去从头生产机器,进一步的工厂模式就是有一个生产的模式,需要的时候就用那种模式生产。而spring是在需要的时候已经自动生产好了机器,直接拿来使用就行了。
spring实现I OC步骤:
1、创建配置文件,在其中引用基本的beans的类库,在spring官方文档中的I OC章节中可以找到,配置service层,d ao层的类,任何类都可以通过bean配置的方式交给容器维护。
此文件放置在类路径下,或者是在资源文件夹下。
2、导入包:最低配置原则,用到的时候再导入对应包。
在这里,
a) commons-logging-1.2.jar
这是日志包,输出日志信息
b) spring-core-4.3.2.RELEASE.jar
这是核心包
c) spring-context-4.3.2.RELEASE.jar
这是环境上下文
d) spring-beans-4.3.2.RELEASE.jar
bean的类库,实现配置的bean的管理
e) spring-expression-4.3.2.RELEASE.jar
表达式实现
以上五个通常是必须的。
当用到了自动注入时,即需要@autowired,则需要导入spring-aop-4.3.2.RELEASE.jar,相应的头部也要更改,这就是最低配置原则。
3、在代码中加载配置文件,ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
之后通过getBean获得实例,然后使用。
在代码中可以看出,在订单的service层的对象方法的save调用时,不需要再自己去实例化service对象,dao对象,是由spring容器做的。这就是控制权反转。
在spring中,这种依赖关系由spring容器来维护,控制权反转(I OC),对象的生命周期的维护权限也移交给了容器。传统的方式就好像要用到机器去工作时,然后才去从头生产机器,进一步的工厂模式就是有一个生产的模式,需要的时候就用那种模式生产。而spring是在需要的时候已经自动生产好了机器,直接拿来使用就行了。
spring实现I OC步骤:
1、创建配置文件,在其中引用基本的beans的类库,在spring官方文档中的I OC章节中可以找到,配置service层,d ao层的类,任何类都可以通过bean配置的方式交给容器维护。
此文件放置在类路径下,或者是在资源文件夹下。
2、导入包:最低配置原则,用到的时候再导入对应包。
在这里,
a) commons-logging-1.2.jar
这是日志包,输出日志信息
b) spring-core-4.3.2.RELEASE.jar
这是核心包
c) spring-context-4.3.2.RELEASE.jar
这是环境上下文
d) spring-beans-4.3.2.RELEASE.jar
bean的类库,实现配置的bean的管理
e) spring-expression-4.3.2.RELEASE.jar
表达式实现
以上五个通常是必须的。
当用到了自动注入时,即需要@autowired,则需要导入spring-aop-4.3.2.RELEASE.jar,相应的头部也要更改,这就是最低配置原则。
3、在代码中加载配置文件,ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
之后通过getBean获得实例,然后使用。
在代码中可以看出,在订单的service层的对象方法的save调用时,不需要再自己去实例化service对象,dao对象,是由spring容器做的。这就是控制权反转。
相关文章推荐
- DH算法实现_关于Imooc上moocer老师的DH算法的补充
- org.springframework.beans.factory.UnsatisfiedDependencyException
- eclipse的基础操作
- Java迭代器介绍
- JDK部分源码阅读与理解
- 话说Sprin 4000 g Security权限管理(源码)
- 【springMVC】简单的前后端数据交流
- Java三大框架Spring、Struts、Hibernate
- java中的GC垃圾回收机制分析
- java枚举类型深入分析
- java单例设计模式中你可能不知道的秘密
- cmd命令行下运行Java程序出现“找不到或无法加载主类”的错误
- 大话ArrayList
- java中的最顶级的异常类Throwable
- java8 Stream学习之旅
- 在myeclipse 10中编辑xml文件时注释方法
- Why Multiple Inheritance is Not Supported in Java
- java中synchronized理解与使用
- 小写数字转换成大写数字
- java中的23中设计模式详细分析