您的位置:首页 > 编程语言 > Java开发

spring IOC

2018-02-01 10:12 369 查看
控制反转(Inversion of Control,英文缩写为IoC)把创建对象的权利交给框架,是框架的重要特征,并非面向对象编程的专用术语。

以前创建对象的主动权和创建时机是由自己把控的,而现在这种权力转移到第三方,比如转移交给了IoC容器,它就是一个专门用来创建对象的工厂,你要什么对象,它就给你什么对象,有了 IoC容器,依赖关系就变了,原先的依赖关系就没了,它们都依赖IoC容器了,通过IoC容器来建立它们之间的关系。

IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。

依赖查找:容器向其管理的组件提供了回调方法,而组件通过这些回到方法与容器进行交互并显示低获取他们的依赖项,这种情况下,一般使用一个查找上下文来访问依赖组件以及容器管理的其他资源

依赖注入:组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。容器全权负责的组件的装配,它会把符合依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象。通过JavaBean属性注射依赖关系的做法称为设值方法注入(Setter Injection);将依赖关系作为构造函数参数传入的做法称为构造器注入(Constructor Injection) 所谓依赖注入,就是指是容器来负责创建对河和维护对象间的依赖关系,而不是通过对象本身负责自己的创建和解决字节的依赖。依赖注入的目的主要是为了解耦,体现了一种组合的理论

spring IOC 容器 (applicationcontext) 负责创建bean,并通过容器将功能类bean注入到需要的bean中,spring 提供xml ,注解, Java配置, groovy配置实现bean的创建和注入

声明bean的注解:

@component 组件 没有明确的角色

@service 在业务逻辑层使用

@repository 在数据访问成(dao层 )使用

@controller 在视图层使用 (springMVC)

注入bean的注解,一般情况下通用

@Autowired spring提供的注解

@inject jsr-330提供的注解

编写功能类的bean 流程

1.使用@service注解声明当前类是spring管理的一个bean

2.使用autowired 将当前的实体bean注入到service中

配置类的流程

@configuration 声明当前类是一个配置类

使用@componentscan ,自动扫描报名下所有使用 @service @component @repository @ controller 的类 并注册为bean

除了使用componentscan 注入bean 还可以通过 annotationconfigapplicationcontext 作为spring容器,接受一个配置类作为参数,并返回配置类的并 通过返回的并来对配置类做操作

ConfigurableApplicationContext run =  SpringApplication.run(Application.class, args);
xxxClass xxx=(xxxXlass) run.getBean("xxxxx");


Java 配置

Java配置是通过@configuration 和 @bean 来实现的

@configuration 声明当前类是一个配置类,相当与一个spring配置的xml 文件

@Bean 注解在方法上,声明当前方法返回值为一个bean
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: