ioc

控制反转IoC简介

蓝咒 提交于 2020-01-21 03:35:16
控制反转 IoC 简介 在实际的应用开发中,我们需要尽量避免和降低对象间的依赖关系,即降低耦合度。通常的业务对象之间都是互相依赖的,业务对象与业务对象、业务对象与持久层、业务对象与各种资源之间都存在这样或那样的依赖关系。但是如何才能做到降低类之间的依赖关系呢?这就是本文核心IoC需要解决的问题,下面从两大点具体介绍IoC: (1) IoC 与 DI 的基本概念 IoC(Inversion Of Control)即控制反转,其具体就是由容器来控制业务对象之间的依赖关系,而不是像传统方式中由代码来直接控制。控制反转的本质,是控制权由应用代码转到了外部容器,控制权的转移即是所谓的反转。控制权的转移带来的好处就是降低了业务对象之间的依赖程度,即实现了解耦。 IoC的实现策略有两种: 1) 依赖查找: 容器中的受控对象通过容器的API来查找自己所依赖的资源和协作对象。这种方式虽然降低了对象间的依赖,但是同时也使用到了容器的API,造成了我们无法在容器外使用和测试对象; 2) 依赖注入(又称 DI : Dependency Injection ): 对象只提供普通的方法让容器去决定依赖关系,容器全权负责组建的装配,它会把符合依赖关系的对象通过属性或者是构造函数传递给需要的对象。通过属性注射依赖关系的做法称为设值方法注入,将构造子参数传入的做法称为构造子注入。 依赖注入的好处如下:

Spring:基于注解的依赖注入的使用

最后都变了- 提交于 2020-01-21 00:40:41
1.什么是pojo?什么是bean? 首先,在之前几篇Spring的介绍文章当中,自己都提到了一个名词叫做POJO类,但是在回顾Spring的注解的使用的时候,去形容java当中的对象还有一个名词是叫做Bean,那么究竟Pojo类和Bean之间有什么区别呢?本人特地为此进行了资料收集,总结如下: 什么是POJO类呢?所谓的POJO,即Plain old java object,翻译过来是纯净的java老式的对象,POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象,pojo一般是用于数据的临时传递,它只能装载数据, 作为数据存储的载体,而不具有业务逻辑处理的能力,常常在dao层的实现的时候需要POJO类。 而什么是JAVAbean呢?所谓的JAVAbean是一种JAVA语言写成的可重用组件。它的方法命名,构造及行为必须符合特定的约定: 这个类必须有一个公共的缺省构造函数。 这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。 这个类应是可序列化的。 因为这些要求主要是靠约定而不是靠实现接口,所以许多开发者把JavaBean看作遵从特定命名约定的POJO类。简而言之,当一个Pojo可序列化,有一个无参的构造函数,使用getter和setter方法来访问属性时,他就是一个JavaBean。 2

Spring学习(一)——Spring中的依赖注入简介

痴心易碎 提交于 2020-01-21 00:39:40
【前面的话】 Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring。不知道为什么对Spring有一种莫名的喜欢感,也许是因为他的名字,有一种希望的感觉。 Spring学习过程中的总结和心得,本文介绍了在初次学习Spring的时候,对于依赖注入的理解,希望有时间可以进行更深入的学习。 请选择性阅读。 本文由牲口TT在博客园首次发表,转载请保持文章的完整性并注明: 作者: 牲口TT 。 链接: http://www.cnblogs.com/xt0810/p/3593853.html 【 Spring 介绍】 Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最初由 Rod Johnson 和 Juergen Hoeller等开发。Spring Framework 提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。 控制反转

Spring 机构体系

匆匆过客 提交于 2020-01-20 01:12:39
Spring核心概念介绍 IoC(核心中的核心):Inverse of Control,控制反转。对象的创建权利由程序反转给Spring框架。 DI:Dependency Injection,依赖注入。在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件中。 AOP:Aspect Oriented Programming,面向切面编程。在不修改目标对象源码情况下,增强IoC容器中Bean的功能。 Spring容器:指的就是IoC容器,底层也就是一个BeanFactory。 来源: CSDN 作者: qq_33358408 链接: https://blog.csdn.net/qq_33358408/article/details/104037744

MySpring-03.Spring的 IOC 和 DI

情到浓时终转凉″ 提交于 2020-01-20 01:09:14
1 ioc的概念和作用 作用: 降低程序间的依赖关系 获取spring的Ioc核心容器,并根据id获取对象 2 ApplicationContext的三个实现类 ApplicationContext的三个常用实现类: (1)ClassPathXmlApplicationContext :它可以加载类路径下的配置文件,要求配置文件必须在类路径下。不在的话,加载不了。(更常用) (2) FileSystemXmlApplicationContext :它可以加载磁盘任意路径下的配置文件(必须有访问权限) (3) AnnotationConfigApplicationContext :它是用于读取注解创建容器 3 BeanFactory和ApplicationContext的区别 核心容器的两个接口引发出的问题: ApplicationContext: 单例对象适用 采用此接口    它在构建核心容器时,创建对象采取的策略是采用立即加载的方式。也就是说,只要一读取完配置文件马上就创建配置文件中配置的对象。 BeanFactory: 多例对象使用   它在构建核心容器时,创建对象采取的策略是采用延迟加载的方式。也就是说,什么时候根据id获取对象了,什么时候才真正的创建对象。 public class Client { public static void main(String[]

Spring笔记之IOC

折月煮酒 提交于 2020-01-20 01:08:43
本篇笔记忽略jar包的导入和配置文件的schema约束 1.我理解的IOC ioc,控制反转,在spring中我理解的ioc就是将需要创建的对象交由spring来创建。在spring中,可以通过配置,来让spring通过反射创建对象并放到spring容器中。这样,其他地方需要调用时,只需要通过配置的id属性来获取即可使用。 配置可以配置具体实现类,也可以配置包,包下所有类的id默认为类名首字母小写。 <bean id="testService" class="com.jdwa.service.impl.TestServiceImpl"></bean> 2.ioc中创建bean的三种方式 默认构造: <bean id="testService" class="com.jdwa.service.impl.TestServiceImpl"></bean> 静态工厂: <bean id="testService" class="com.jdwa.factory.StaticFactory" factory-method="createTestService"></bean> 实例工厂: <bean id="instancFactory" class="com.jdwa.factory.InstanceFactory"></bean> <bean id="testService"

Spring IOC

徘徊边缘 提交于 2020-01-20 01:07:58
IOC:Inversion of Control 控制反转. 指的是 对象的创建权反转(交给)给Spring. 作用是实现了程序的解耦合. 1.IOC和DI: IOC :控制反转,将对象的创建权交给了Spring. DI :Dependency Injection 依赖注入.需要有IOC的环境,Spring创建这个类的过程中,Spring将类的依赖的属性设置进去.   例如:如果UserServiceImpl的实现类中有一个属性,那么使用Spring框架的IOC功能时,可以通过依赖注入把该属性的值传入进来!!   具体的配置如下     <bean id="us" class="com.itheima.demo1.UserServiceImpl">       <property name="uname" value="小风"/>     </bean> 2.Spring框架的属性注入   1. 对于类成员变量,常用的注入方式有两种     构造函数注入     属性setter方法注入 3. BeanFactory和ApplicationContext的区别:   BeanFactory :是在getBean的时候才会生成类的实例.   ApplicationContext :在加载applicationContext.xml时候就会创建. 4.Spring中<bean

spring中IOC与AOP的相关注解

做~自己de王妃 提交于 2020-01-20 00:56:06
1.IOC中 1. @Configuration : 作用 :表明当前类是一个配置类 属性 : value :它和basePackages的作用是一样的, 都是指定创建容器时要扫描的包 细节 :当配置类作为AnnotationConfigApplicationContext 对象创建的参数时,该注解可以不写。 2. @ComponentScan : 作用 :扫描包,里边的value属性为我们要扫描的包名; 3. @Bean 作用 :用于把当前方法的返回值作为bean对象存入spring的IOC容器中 属性 : name: 用于指定bean的id。默认值是当前方法的名称 细节 :当我们使用注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象。 查找的方式和Autowired注解的作用是一样的。 4. @Import : 作用 :用于导入其他的配置类 属性 : value :用于指定其他配置类的字节码 细节 :当我们使用Import的注解之后,有Import注解的类就是父配置类,而导入的都是子配置类 5. @Propertysource : 作用 :用于指定properties文件的位置 属性 : value :指定文件的名称和路径 关键字 :classpath;表示类路径下 6. @Component 作用 :用于把当前类存入spring容器中 属性

Spring

无人久伴 提交于 2020-01-19 23:05:22
1、Spring 1.1、简介 Spring:春天------>给软件行业带来了春天 2002,首次推出了Spring框架的雏形:interface21框架 Spring框架即以interface21框架未基础,经过重新设计,并不断丰富其内涵,于2004年3月24号发布了1.0正式版。 Rod Johnson Spring Framework创始人,著名作者。 Rod 在 悉尼大学 不仅获得了计算机学位,同时还获得了音乐学位。更令人吃惊的是在回到软件开发领域之前,他还获得了音乐学的博士学位。 Spring理念:实现有的技术更加太容易使用,本身是一个大杂烩,整合了现有的技术框架! SSH: struct2 + Spring + Hibernate(全自动) SSM: SpringMVC + Spring + Mybatis(半自动 更灵活) 官网:https://spring.io/projects/spring-framework#overview 官方下载地址:https://repo.spring.io/release/org/springframework/spring/ GitHub: https://github.com/spring-projects/spring-framework <!-- https://mvnrepository.com/artifact/org

Spring IOC(一) 依赖注入

时光怂恿深爱的人放手 提交于 2020-01-19 07:05:18
要弄清楚SpringIOC的原理是什么,首先要弄清楚为什么需要他。我们对Spring IOC最多的描述就是控制反转、依赖倒置,所以这里就要先了解一下什么事控制反转和依赖倒置。 我们知道,类与类之间存在调用关系,一个类会依赖另一个,调用另一个类的方法或属性去完成某一件事,这也是类的单一职责和模块化设计要求。简单举个例子来说,设想这样一个简单场景: 一个国家要发生战争,国王要派遣将军去打仗,首先是将军这个类,他能打仗,所以可以简单定义为: 然后是国王类,国王类重点在于下达命令给将军,然后让将军去打仗,所以国王必须要持有将军这个类: 这里通过构造器,在国王类中新建将军类,然后让将军类取执行打仗的任务。 然后来看测试类,让国王执行下发打仗命令: 看上去很正常,完全满足需求。但是仔细想想,一个只有一个国王,但可能只有一个将军吗,假如王国里还有个将军叫General2,下次国王想派遣General2去打仗,基于以上的代码该怎么办,只能修改国王类: 这样就可以了,但是你想想,王国有这么多的将军,难道每一次派一个将军去打仗,难道每次我都要对国王类进行修改吗,所以以上明显不是个很好的办法。 这样做的弊端在于,将军类的实例化放在了国王类里面,将军类与国王类耦合太大,以至于要修改将军类,就必须修改国王类。 所以我们调整一下思路,以上的思路其实也是我们常遇见的,当一个类中需要其他类的是后