Spring IOC和DI

开发工具与关键技术: Java
作者:杜永鹏

Spring是一个开源框架
Spring为简化企业级开发而生,使用Spring开发可以将Bean对象,Dao组件对象,Service组件对象等交给Spring容器来管理,这样使得很多复杂的代码在Spring中开发却变得非常优雅和简洁,有效的降低代码的耦合度,极大的方便项目的后期维护、升级和扩展。
Spring是一个IOC(DI)和AOP容器框架。
Spring的优良特性
1、非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API
2、控制反转:IOC–Inversion of Control,指的是将对象的创建权交给spring去创建。使用spring之前,对象的创建都是有我们自己在代码中new创建。而使用Spring之后。对象的创建都是由给了Spring框架。
3、依赖注入:DI–Dependency Injection,是指依赖的对象不需要手动调用setXX方法去设置,而是通过配置赋值。
4、面向切面编程:Aspect Oriented Programming–AOP
5、容器:Spring是一个容器,因为它包含并且管理应用对象的生命周期
6、组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用。在Spring中可以使用XML和Java注解组合这些对象。
7、一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上Spring自身也提供了表述层的SpringMVC和支持久层的SpringJDBC)

Spring Bean的配置方式
传统XML配置方式
SpringXML配置bean元素相关属性
作为Spring核心机制的依赖注入,改变了传统的编程习惯,对组件的实例化不再由应用程序完成,转而由spring容器完成,在需要是注入应用程序中,从而组件之间依赖关系进行了解耦。这一切都离不开Spring配置文件中使用的元素。
Spring容器可以被看作一个大工厂,而Spring容器中的Bean就相当于该工厂的产品。如果希望这个大工厂能够生产和管理Bean,这时则需要告诉容器需要哪些Bean,以及需要以何种方式将这些Bean装配到一起
元素的常用属性
属性名称:id 描述:是一个Bean的唯一标识符,Spring容器对Bean的配置和管理都通过该属性完成
属性名称: name 描述:Spring容器同样可以通过此属性对容器中的Bean进行配置管理,name属性中可以为Bean指定多个名称,每个名称之间用逗号或分号隔开
属性名称:class 描述:该属性指定了Bean的具体实现类,它必须是一个完整的类名,使用类的全限定名
属性名称:scope 描述:用于设定Bean实例的作用域,其属性值有singleton(单例)、prototype(原型)、request、session和global Session。其默认值是singleton
属性名称:constructor-arg 描述: 元素的子元素,可以使用此元素传入构造参数进行实例化。该元素的index 属性指定构造参数的序号(从 0 开始),type 属性指定构造参数的类型
属性名称: property 描述: 元素的子元素,用于调用 Bean 实例中的 Set 方法完成属性赋值,从而完成依赖注入。该元素的 name 属性指定 Bean 实例中的相应属性名
属性名称:ref 描述:和 等元素的子元素索引,该元素中的 bean 属性用于指定对 Bean 工厂中某个Bean 实例的引用
属性名称:value 描述:和 等元素的子元素,用于直接指定一个常量值
属性名称:list 描述: 用于封装 List 或数组类型的依赖注入
属性名称:set 描述:用于封装 Set 类型属性的依赖注入
属性名称:map 描述:用于封装 Map 类型属性的依赖注入
属性名称:entry 描述: 元素的子元素,用于设置一个键值对。其 key 属性指定字符串类型的键值,ref或 value 子元素指定其值

Spring bean中id和name的区别
最近在开发项目的时候发现spring的BeanFactory创建bean的时候有时候有2种不同的配置,即<beanid="user"class=“com.gx.po.User”> 与 ,下面一起分析一下这2种配置的区别:

  1. 命名规范。id属性命名必须满足xml命名规范,而name属性命名可以不用遵守。不论是id属性还是name属性在创建bean的时候不遵守命名规范会抛出异常。
  2. 唯一性。id属性命名必须严格遵守唯一原则,否则会报错;name属性命名可以不必遵守唯一原则,在创建实例对象的时候后面一个bean会覆盖前面一个bean。
    开发的时候尽量都使用id属性配置bean,严格的检测能让程序更加良好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值